%global _empty_manifest_terminate_build 0 Name: python-envoy-data-plane Version: 0.6.0 Release: 1 Summary: Python dataclasses for the Envoy Data-Plane-API License: MIT URL: https://pypi.org/project/envoy-data-plane/ Source0: https://mirrors.aliyun.com/pypi/web/packages/aa/e0/53a591282cb4d55bbdf2598429080645b548fcf17b8ff281927f4f54e955/envoy_data_plane-0.6.0.tar.gz BuildArch: noarch Requires: python3-betterproto Requires: python3-grpcio-tools %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: ```shell script python -m pip install envoy_data_plane ``` ## Installing specific XDS revisions There are branches available with compiled python protobuf files. To install them, you can use the following syntax: ```shell script pip install git+https://github.com/cetanu/envoy_data_plane@<BRANCH NAME> ``` Examples: ``` pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.13.7 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.16.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.17.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.18.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.19.0 ``` Not all versions may be available. Raise an issue if you need another one added. ## Example ```python 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": [] } ] } ``` %package -n python3-envoy-data-plane Summary: Python dataclasses for the Envoy Data-Plane-API Provides: python-envoy-data-plane BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-envoy-data-plane # 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: ```shell script python -m pip install envoy_data_plane ``` ## Installing specific XDS revisions There are branches available with compiled python protobuf files. To install them, you can use the following syntax: ```shell script pip install git+https://github.com/cetanu/envoy_data_plane@<BRANCH NAME> ``` Examples: ``` pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.13.7 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.16.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.17.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.18.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.19.0 ``` Not all versions may be available. Raise an issue if you need another one added. ## Example ```python 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": [] } ] } ``` %package help Summary: Development documents and examples for envoy-data-plane Provides: python3-envoy-data-plane-doc %description help # 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: ```shell script python -m pip install envoy_data_plane ``` ## Installing specific XDS revisions There are branches available with compiled python protobuf files. To install them, you can use the following syntax: ```shell script pip install git+https://github.com/cetanu/envoy_data_plane@<BRANCH NAME> ``` Examples: ``` pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.13.7 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.16.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.17.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.18.2 pip install git+https://github.com/cetanu/envoy_data_plane@envoy_v1.19.0 ``` Not all versions may be available. Raise an issue if you need another one added. ## Example ```python 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": [] } ] } ``` %prep %autosetup -n envoy_data_plane-0.6.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-envoy-data-plane -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.0-1 - Package Spec generated