跳转到主要内容

包含gnmi proto规范和生成Python代码的Python包。

项目描述

gNMI Protobuf

PyPI version Python Versions Code style: black

此项目旨在成为用Python编写的gNMI项目的基石构建模块。

使用gRPCProtocol Buffers构建Pythonic库和应用的过程已经被分割。这通常意味着开发人员需要复制proto文件,使用protoc从这些文件生成Python源代码,并在项目中使用它们。已经存在几个以这种方式构建的项目。虽然它们是功能性的,但这些可能难以重用或维护,通常导致过时的代码和没有版本。

gnmi-proto基于betterprotogrpclib库已经进行的改进。在这里,我们提供版本化的包,其中包含从gNMI协议缓冲区生成的代码。

默认实现使用了betterprotoprotoc插件来生成干净的现代代码。此外,它还提供了一个gnmi.proto.legacy模块,该模块暴露了使用内置Python生成器由protoc生成的代码。

示例用法

客户端

以下代码期望服务器位于 127.0.0.1:9339,使用测试配置。有关如何设置的信息,请参阅gNMI 目标服务器部分,在CONTRIBUTING.md

使用 betterproto 和 grpclib

import gnmi.proto
import grpclib.client


async def main():
    channel = grpclib.client.Channel(host="127.0.0.1", port=9339, ssl=None)
    service = gnmi.proto.gNMIStub(
        channel, metadata={"username": "admin", "password": "secret"}
    )

    response = await service.capabilities()
    print(response.to_json(indent=2))

    response = await service.get(
        path=[gnmi.proto.Path(elem=[gnmi.proto.PathElem(name="interfaces")])],
    )
    print(response.to_json(indent=2))


if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

使用纯 grpc

import gnmi.proto.legacy
import grpc


def main():
    channel = grpc.insecure_channel("127.0.0.1:9339")
    metadata = [("username", "admin"), ("password", "secret")]
    service = gnmi.proto.legacy.gNMIStub(channel)

    response = service.Capabilities(gnmi.proto.legacy.CapabilityRequest())
    print(response)

    response = service.Get(
        gnmi.proto.legacy.GetRequest(
            path=[
                gnmi.proto.legacy.Path(
                    elem=[gnmi.proto.legacy.PathElem(name="interfaces")]
                )
            ],
        ),
        metadata=metadata,
    )
    print(response)


if __name__ == "__main__":
    main()

项目详情


下载文件

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

源代码分发

gnmi-proto-0.1.0a4.tar.gz (38.0 kB 查看散列)

上传时间 源代码

构建分发

gnmi_proto-0.1.0a4-py3-none-any.whl (43.8 kB 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面