contrail

Contrail repo for core components (go based)

Github stars Tracking Chart

[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

Main metrics

Overview
Name With OwnerJuniper/contrail
Primary LanguageGo
Program languageMakefile (Language Count: 7)
Platform
License:Apache License 2.0
所有者活动
Created At2017-12-05 17:09:07
Pushed At2024-02-14 19:12:03
Last Commit At2020-07-29 01:13:42
Release Count2
Last Release Namev5.1 (Posted on 2019-05-27 04:24:07)
First Release Namepre-release (Posted on )
用户参与
Stargazers Count43
Watchers Count137
Fork Count31
Commits Count1.8k
Has Issues Enabled
Issues Count49
Issue Open Count22
Pull Requests Count36
Pull Requests Open Count3
Pull Requests Close Count12
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private