This repository holds Go implementation for Contrail projects. The goal of this project is to realize Go-based implementation & etcd based such as Kubernetes in order to improve performance, scale and ease operation.
We are planning to add following sub components.
- API Server ( python based VNC API Server equivalent)
- Sync (ifmap, rabbitMQ related code equivalent but depends on etcd)
- Agent (SchemaTransformer, Device Manager equivalent)
- Code generation tool (generateDS equivalent)
Currently, this project is POC stage so any external/internal API or design subject to change up to community discussion.
go get -u github.com/Juniper/contrail
Note that go get -u github.com/Juniper/contrail/cmd/contrailutil
fails because we don't
commit generated code.
make deps
make generate
make install
# setup testenv using docker
make testenv
# you need wait db process up
make reset_db
Note that these commands use docker
command and depending on your docker
configuration they may require root permissions.
See Docker Documentation
for more info.
-
Run processes
contrail -c sample/contrail.yml run
Note that you can overwrite configuration parameters using environment variable with prefix "CONTRAIL_"
For example CONTRAIL_DATABASE_DEBUG is overwriting database.debug value.
CONTRAIL_DATABASE_DEBUG=true contrail -c sample/contrail.yml run
Individual processes can be enabled or disabled using the configuration parameters.
-
Run CLI
export CONTRAIL_CONFIG=sample/cli.yml # Show Schema contrailcli schema virtual_network # Create resources contrailcli sync sample/sample_resource.yml # List resources contrailcli list virtual_network --detail # Delete resources contrailcli delete sample/sample_resource.yml
For more cli command see CLI Usage,
Note that schema stored here is just a cache for helping development. Developers should make sure download latest schema from http://github.com/Juniper/contrail-api-client
JSON version stored in public/schema.json
Templates for code generation based on this schema are stored in tools/templates Template configuration You can add your template on template_config.yaml.
make test
You can print out full sql trace too.
CONTRAIL_DATABASE_DEBUG=true make test
Repository holds source code for following CLI applications:
contrail
- contains API Server, Agent and Sync processes and Cluster servicecontrailcli
- contains API Server command line clientcontrailschema
- code generator by schema definitionscontrailutil
- contains development utilities
Show possible commands of application:
contrail -h
Show detailed information about specific command:
contrail <command> -h
API Server supports Keystone V3 authentication and RBAC. API Server has minimal Keystone API V3 support for standalone use case. See a configuration example
- Apply lint tools
- Follow best practices
- comply to Effective Go
- comply to Code review comments
- keep
make lint
output clean
We follow openstack way of review. https://docs.openstack.org/infra/manual/developers.html This is our review system. https://review.opencontrail.org
Setup gerrit account. Sign CLA.
Install git-review.
pip install git-review
Send git review command.
git review
See docs folder.