Protobuf model and library code for oaktree
Go to file
OpenDev Sysadmins 9868e2cdc9 OpenDev Migration Patch
This commit was bulk generated and pushed by the OpenDev sysadmins
as a part of the Git hosting and code review systems migration
detailed in these mailing list posts:

http://lists.openstack.org/pipermail/openstack-discuss/2019-March/003603.html
http://lists.openstack.org/pipermail/openstack-discuss/2019-April/004920.html

Attempts have been made to correct repository namespaces and
hostnames based on simple pattern matching, but it's possible some
were updated incorrectly or missed entirely. Please reach out to us
via the contact information listed at https://opendev.org/ with any
questions you may have.
2019-04-19 19:51:13 +00:00
m4 Initial commit 2016-11-02 15:20:43 -05:00
oaktreemodel Merge "Add dict mapping for searching for things" 2016-11-14 23:51:23 +00:00
.gitignore Add tarball to .gitignore 2016-11-14 06:35:25 -06:00
.gitreview OpenDev Migration Patch 2019-04-19 19:51:13 +00:00
.mailmap Initial commit 2016-11-02 15:20:43 -05:00
.testr.conf Initial commit 2016-11-02 15:20:43 -05:00
bindep.txt Add scripts to install proto3 from source 2016-11-06 07:52:22 -06:00
bootstrap.sh Add scripts to install proto3 from source 2016-11-06 07:52:22 -06:00
build.sh Initial commit 2016-11-02 15:20:43 -05:00
configure.ac Add scripts to install proto3 from source 2016-11-06 07:52:22 -06:00
CONTRIBUTING.rst Initial commit 2016-11-02 15:20:43 -05:00
install_proto3.sh Add scripts to install proto3 from source 2016-11-06 07:52:22 -06:00
LICENSE Initial commit 2016-11-02 15:20:43 -05:00
Makefile.am Add Floating IP get/search 2016-11-07 10:24:08 -06:00
MANIFEST.in Cleanup setup.cfg build settings 2016-11-07 10:39:11 -06:00
README.rst Initial commit 2016-11-02 15:20:43 -05:00
requirements.txt Initial commit 2016-11-02 15:20:43 -05:00
setup.cfg Cleanup setup.cfg build settings 2016-11-07 10:39:11 -06:00
setup.py Initial commit 2016-11-02 15:20:43 -05:00
test-requirements.txt Initial commit 2016-11-02 15:20:43 -05:00
TODO Initial commit 2016-11-02 15:20:43 -05:00
tox_install_python.sh Initial commit 2016-11-02 15:20:43 -05:00
tox.ini Initial commit 2016-11-02 15:20:43 -05:00

oaktreemodel

oaktree is a gRPC interface for interacting with OpenStack clouds that is inherently interoperable and multi-cloud aware.

oaktreemodel is the protobuf definitions and the libraries and/or code generated from that to make it possible for people of all languages to interact with the gRPC system without developing a python dependency anywhere.

At start, go, C++ and python are supported.

With go, the generated files are checked in to the git repo, because that's how go dependencies work.

With C++ and python, they are not, as we exepct the unit of consumption to be a built library and header files for C++ or a PyPI package for Ruby. It's the most likely that as we add structure for more languages that they will follow the C++/Python approach and not the go approach - but the decision will be made on a per-language basis and reported back here.

Note on API compat

tl;dr - Upgrading oaktree should NEVER negatively impact end users.

Until a 1.0.0 release is cut, please consider that literally everything in this repo can change with no notice or consideration of breaking backwards compat. This is a new approach to several things and it's entirely likely we're going to get things wrong a few times.

Post 1.0.0 oaktree and oaktreemodel will be held to the same backwards-compat promises as shade itself. That is - there will never be backwards-compat breaking release, and it should _always be safe to deploy the latest release in production. In fact, even for people running older stable releases of OpenStack, the recommendation will be to run the latest oaktree, so that the latest cross-compatibility changes can be picked up.

Note on Implementations

It is absolutely the intent of oaktreemodel that multiple implementations based on the protobuf descriptions exist for the client interaction. In fact, the code generated and published from this repo is fairly low-leve on a gRPC basis, so it's almost certainly the case that each language will want to consume this code in the context of some other library that has an end-user focused UI.

It is absolutely NOT the intent that multiple implementations of the server side exist.

The reason for that is that, at least as of now, the business logic in the shade library is extensive and complex. It handles a million corner cases in the underlying clouds. oaktree servers should all be able to talk not just to the cloud they are deployed with, but also to other OpenStack clouds either talking to the remote oaktree or directly to the remote OpenStack API.

The client interfaces in gRPC should be considered to be comprehensive and as descriptive of the interface as possible. For people wanting an oaktree server, please use actual oaktree.

Building

First you need some dependencies:

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

Then you can build the code:

autoreconf -fi
./configure
make