Skip to main content

Envoy Data-Plane-API 的 Python 数据类

项目描述

envoy_data_plane

使用 Betterproto 将 envoyproxy/data-plane-api 协议缓冲区转换为 Python 数据类

预期用途

这是一个帮助库,允许导入 envoy API 中可用的每种类型。

一个用例可能是使用 Python 脚本生成 Envoy 配置。

就我而言,我将在自定义构建的控制平面中使用这个库,以便在我的 IDE 中具有自动完成功能,以及一种基本的验证形式。

将来,这也可能有助于在 Python 中构建惯用的 GRPC 控制平面。

安装

这个包发布到 PyPI:

python -m pip install envoy_data_plane

安装特定的 XDS 修订版

编译后的 python protobuf 文件有可用的分支。
要安装它们,您可以使用以下语法:

pip install git+https://github.com/cetanu/envoy_data_plane@<BRANCH NAME>

例子:

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

并非所有版本都可用。如果您需要添加另一个问题,请提出问题。

例子

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)
)

结果:

{
  "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": []
    }
  ]
}

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

envoy_data_plane-0.3.0.tar.gz (463.9 kB 查看哈希

已上传 source

内置分布

envoy_data_plane-0.3.0-py3-none-any.whl (739.7 kB 查看哈希

已上传 py3