-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66649/
-----------------------------------------------------------

Review request for mesos.


Repository: mesos


Description
-------

Added pb2gen.sh for generating python protobuf bindings.

This change addresses the issue of protobuf bindings for the mesos python 
client. Generating python protobuf bindings is not as straightforward as it 
seems since vanilla `protoc` has two limitiations in terms of python code 
generation:
1. it does not create the `__init__.py` files required for python packages
2. it does not allow arbitrary prefixes to the import paths, even though it 
allows a custo `python_path` when generating code

To this end, this change adds the following:
1. A script (`pb2gen.sh`) for generating protobuf python bindings and 
post-processing the generated python code so that it is usable by the rest of 
the code under `src/python/lib/mesos`.
2. Adds python bindings generated from `pb2gen.sh` using the current set of 
protobuf definitions.


Diffs
-----

  src/python/lib/mesos/pb2/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/agent/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/agent/agent_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/allocator/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/allocator/allocator_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/appc/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/appc/spec_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/authentication/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/authentication/authentication_pb2.py 
PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/authorizer/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/authorizer/acls_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/authorizer/authorizer_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/docker/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/docker/spec_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/docker/v1_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/docker/v2_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/executor/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/executor/executor_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/fetcher/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/fetcher/fetcher_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/maintenance/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/maintenance/maintenance_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/master/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/master/master_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/mesos_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/module/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/module/hook_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/module/module_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/oci/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/oci/spec_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/quota/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/quota/quota_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/resource_provider/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/resource_provider/resource_provider_pb2.py 
PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/scheduler/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/scheduler/scheduler_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/slave/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/slave/containerizer_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/slave/oversubscription_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/state/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/state/state_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/uri/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/uri/uri_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/agent/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/agent/agent_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/allocator/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/allocator/allocator_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/executor/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/executor/executor_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/maintenance/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/maintenance/maintenance_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/master/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/master/master_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/mesos_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/quota/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/quota/quota_pb2.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/resource_provider/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/resource_provider/resource_provider_pb2.py 
PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/scheduler/__init__.py PRE-CREATION 
  src/python/lib/mesos/pb2/mesos/v1/scheduler/scheduler_pb2.py PRE-CREATION 
  src/python/lib/pb2gen.sh PRE-CREATION 
  src/python/lib/requirements.in 0742f3d846c99c1c4907d9628fb49845564563b2 


Diff: https://reviews.apache.org/r/66649/diff/1/


Testing
-------

1. under `src/python/lib`, run `pb2gen.sh`
2. initialize and activate virtualenv: `virtualenv env && . env/bin/activate`
3. install reqs: `pip install -r requirements.in`
4. try to import modules from generated python code: `python -c 'from 
mesos.pb2.mesos.v1.master import master_pb2'`


Thanks,

Eric Chung

Reply via email to