Skip to content

Juniper/contrail

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d6856c1 · Aug 4, 2020
Feb 13, 2020
Aug 4, 2020
Aug 4, 2020
Dec 11, 2019
Aug 2, 2019
Aug 4, 2020
Aug 4, 2020
Jun 27, 2018
Jan 13, 2020
Aug 4, 2020
Aug 4, 2020
Aug 4, 2020
Oct 23, 2018
Aug 4, 2020
Dec 10, 2019
Aug 4, 2020
Apr 13, 2020
Dec 5, 2017
Aug 4, 2020
Apr 25, 2019
Dec 5, 2019
Aug 6, 2019
Aug 4, 2020
Aug 4, 2020
Aug 4, 2020

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 (IF-MAP, 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, Docker and Docker Compose

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

# move to repo
cd $HOME/go/src/github.com/Juniper/contrail
# make sure put GOBIN to path
export PATH=$PATH:$HOME/go/bin
# or if you defined GOPATH
# cd $GOPATH/src/github.com/Juniper/contrail
make deps

Step4. Generate source code

make generate

Step5. Install Contrail binaries

make install

Step6. Setup test environment

make testenv reset_db

Note that these commands use docker command and depending on your Docker configuration they may require root permissions. See: Docker Documentation

First run

  • Run Contrail process

    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 commands

    export CONTRAIL_CONFIG=sample/cli.yml
    
    # Show schema
    contrailcli schema virtual_network
    
    # Sync resources
    contrailcli sync sample/sample_resource.yml
    
    # List resources
    contrailcli list virtual_network --detail
    
    # Delete resources
    contrailcli delete sample/sample_resource.yml

    See: CLI Usage

Testing

Run all tests with coverage:

make test

API documentation

OpenAPI specification file is generated during every run of make generate and it is located in ./public/openapi.json.

You can also run API doc server on local machine using:

make apidoc

The doc will be available on localhost:5000.

How to contribute

Step1

Setup Gerrit account. Sign CLA.

Step2

Install git-review tool.

pip install git-review

Step3

Send review to Gerrit:

git review

Documentation

See: Documentation index