Python dataclasses for the Envoy Data-Plane-API
Project description
envoy_data_plane
A conversion of envoyproxy/data-plane-api protocol buffers into Python dataclasses using betterproto
Intended usage
This is a helper library that allows importing every type available in the envoy API.
One use-case might be generating Envoy configuration using a Python script.
In my case, I will use this library in my custom built control-plane, so that I have autocompletion in my IDE, and a basic form of validation.
In future, this may also help with building an idiomatic GRPC control-plane in Python.
Installation
This package is published to PyPI:
python -m pip install envoy_data_plane
Example
import stringcase
import json
import envoy_data_plane.envoy.api.v2 as envoy
route_config = envoy.RouteConfiguration(
name='MyRouteConfig',
virtual_hosts=[
envoy.route.VirtualHost(
name='SomeWebsite',
domains=['foobar.com'],
routes=[
envoy.route.Route(
name='catchall',
match=envoy.route.RouteMatch(
prefix='/'
),
direct_response=envoy.route.DirectResponseAction(
status=200,
body=envoy.core.DataSource(
inline_string='Hello there'
)
)
)
]
)
]
)
response = envoy.DiscoveryResponse(
version_info='0',
resources=[
route_config
],
)
print(
json.dumps(response.to_dict(casing=stringcase.snakecase), indent=2)
)
Result:
{
"version_info": "0",
"resources": [
{
"name": "MyRouteConfig",
"virtual_hosts": [
{
"name": "SomeWebsite",
"domains": [
"foobar.com"
],
"routes": [
{
"name": "catchall",
"match": {
"prefix": "/",
"headers": [],
"query_parameters": []
},
"direct_response": {
"status": 200,
"body": {
"inline_string": "Hello there"
}
},
"request_headers_to_add": [],
"response_headers_to_add": []
}
],
"virtual_clusters": [],
"rate_limits": [],
"request_headers_to_add": [],
"response_headers_to_add": []
}
],
"response_headers_to_add": [],
"request_headers_to_add": []
}
]
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
envoy_data_plane-0.0.7.tar.gz
(100.1 kB
view hashes)
Built Distributions
envoy_data_plane-0.0.7-py3.8.egg
(184.7 kB
view hashes)
envoy_data_plane-0.0.7-py3.7.egg
(184.5 kB
view hashes)
Close
Hashes for envoy_data_plane-0.0.7-py3.8.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17d26e0c2dc9016cc67df1c688c59eec9aa2adb35a8a7949ce1ce12b2ba22ccb |
|
MD5 | 40cf056cd9ba2848774e9d6c75075f7b |
|
BLAKE2b-256 | db65d839634e9f28015964219ca348b12206b41f9ae400a34b0fa37b7bb54b3f |
Close
Hashes for envoy_data_plane-0.0.7-py3.7.egg
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e3615063a4fcfb55e1ea34ded579ae345395de659b99ec2504a127d05ce92c2 |
|
MD5 | 76b4340bd25f3dd3a8f88478b0b7023a |
|
BLAKE2b-256 | d17fd7c5bfb2c5e6d5d311be559a9da063bbb2ffa007a954db041195322ab58a |