Skip to content

Jackjvs/contrail

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[POC] Go code base for Contrail projects

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.

Development setup

Step1. Install Go and docker

Step2. Go get contrail

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.

Step3. Install dependencies

make deps

Step4. Generate code

make generate

Step5. Install code

make install

Step6. Install test environment

# 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.

Try

  • 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,

Schema Files

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.

Testing

make test

You can print out full sql trace too.

CONTRAIL_DATABASE_DEBUG=true make test

Commands

Repository holds source code for following CLI applications:

  • contrail - contains API Server, Agent and Sync processes and Cluster service
  • contrailcli - contains API Server command line client
  • contrailschema - code generator by schema definitions
  • contrailutil - contains development utilities

Show possible commands of application:

contrail -h

Show detailed information about specific command:

contrail <command> -h

Keystone Support

API Server supports Keystone V3 authentication and RBAC. API Server has minimal Keystone API V3 support for standalone use case. See a configuration example

How to contribute

We follow openstack way of review. https://docs.openstack.org/infra/manual/developers.html This is our review system. https://review.opencontrail.org

Step1.

Setup gerrit account. Sign CLA.

Step2.

Install git-review.

pip install git-review

Step3.

Send git review command.

git review

Document

See docs folder.

About

Contrail repo for core components (go based)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 95.8%
  • Shell 2.8%
  • Other 1.4%