oaktreemodel的基本protobuf数据模型
项目描述
oaktree是一个OpenStack云的gRPC接口,它本质上是互操作的和多云感知的。
oaktreemodel是protobuf定义以及从该定义生成的库和/或代码,这使得所有语言的开发人员都能够与gRPC系统交互,而无需在任何地方开发Python依赖项。
开始时,支持Go、C++和Python。
使用Go,生成的文件被提交到git仓库,因为Go依赖项就是这样工作的。
使用C++和Python,则不是这样,因为我们期望消费单元是一个构建的库以及C++的头文件或Ruby的PyPI包。在添加更多语言结构时,它们很可能会遵循C++/Python的方法,而不是Go的方法 - 但每个语言的决策将在这里进行报告。
关于API兼容性的说明
简而言之 - 升级oaktreemodel绝不应对最终用户产生负面影响。
在切出1.0.0版本之前,请考虑这个仓库中的所有内容都可能随时更改,无需通知或考虑向后兼容性的破坏。这是对几件事情的新方法,我们很可能会在几个方面犯一些错误。
1.0.0版本之后,oaktree和oaktreemodel将遵守shade本身的向后兼容性承诺。也就是说,永远不会发布破坏向后兼容性的版本,应该始终可以安全地将最新版本部署到生产环境中。实际上,即使是运行较旧稳定版本的OpenStack的人,建议也运行最新的oaktree,以便可以获取最新的跨兼容性更改。
关于实现
oaktreemodel的意图是在客户端交互的protobuf描述的基础上存在多个实现。实际上,从这个仓库生成并发布的代码在gRPC基础上是相当低级别的,所以几乎可以肯定,每种语言都将希望在具有面向最终用户UI的其他库的上下文中消费此代码。
绝对不是意图存在多个服务器端实现。
原因是,至少到目前为止,shade库中的业务逻辑非常广泛且复杂。它处理底层云中的数百万种特殊情况。oaktree服务器应该能够与它们部署的云进行通信,并且还能够与其他OpenStack云进行通信,无论是与远程oaktree通信还是直接与远程OpenStack API通信。
应该将gRPC中的客户端接口视为全面且尽可能详细地描述接口。对于想要oaktree服务器的人,请使用实际的oaktree。
构建
首先,您需要一些依赖项
pip install bindep
apt-get install $(bindep -b)
pip install -f requirements.txt
pip install grpcio-tools
go get -u github.com/golang/protobuf/protoc-gen-go
然后您可以构建代码
autoreconf -fi
./configure
make
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。