This repository is actively maintained via Gerrit so please let us know about any problems you find. You can ask for help on Slack but if no one replies right away, go ahead and open a bug on JIRA and label the bug with the label "dev-env" and it will get looked at soon. You can also post to the new Google Group if you're having trouble but don't know if the problem is a bug or a mistake on your part.
Since dev-env uses generally available contrail components, please refer to following documentation pages:
- for packages generation: contrail-packages
- for building containers: contrail-container-builder and contrail-deployers-containers
- for deployments: contrail-ansible-deployer
There are 2 official sources of containers for dev-env:
- Released images on docker hub opencontrail, tagged with released version.
- Nightly images on docker hub opencontrailnightly, tagged with corresponding development branch.
Note: tag
latest
points tomaster
branch.
You can also use your own image, built using container/build.sh
script.
For mac: https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
For CentOS/RHEL/Fedora linux host:
yum install docker
For Ubuntu linux host:
apt install docker.io
NOTE (only if you hit any issues): Make sure that your docker engine supports images bigger than 10GB. For instructions, see here: https://stackoverflow.com/questions/37100065/resize-disk-usage-of-a-docker-container Make sure that there is TCP connectivity allowed between the containers in the default docker bridge network, (for example disable firewall).
git clone https://github.com/Juniper/contrail-dev-env
cd contrail-dev-env
sudo ./startup.sh
Note: This command runs container opencontrailnightly/developer-sandbox:master
from opencontrailnightly docker hub by
default. You can specify different image and/or tag using flags, e.g.
- to develop on nightly R5.0 container use:
sudo ./startup.sh -t R5.0
- to develop code based on a tagged
r5.0
release, use:sudo ./startup.sh -i opencontrail/developer-sandbox -t r5.0
contrail-developer-sandbox [For running scons, unit-tests etc]
contrail-dev-env-rpm-repo [Repo server for contrail RPMs after they are build]
contrail-dev-env-registry [Registry for contrail containers after they are built]
docker attach contrail-developer-sandbox
Required first steps in the container:
cd /root/contrail-dev-env
make sync # get latest code
make fetch_packages # pull third_party dependencies
make setup # set up docker container
make dep # install build dependencies
The descriptions of targets:
make sync
- sync code in./contrail
directory usingrepo
toolmake fetch_packages
- pull./third_party
dependencies (after code checkout)make setup
- initial configuration of image (required to run once)make dep
- installs all build dependenciesmake dep-<pkg_name>
- installs build dependencies for <pkg_name>
make list
- lists all available RPM targetsmake rpm
- builds all RPMsmake rpm-<pkg_name>
- builds single RPM for <pkg_name>
make list-containers
- lists all container targetsmake containers
- builds all containers' images, requires RPM packages in /root/contrail/RPMSmake container-<container_name>
- builds single container as a target, with all docker dependencies
make list-deployers
- lists all deployers container targetsmake deployers
- builds all deployersmake deployer-<container_name>
- builds single deployer as a target, with all docker dependencies
make test-containers
- build test containers
make clean{-containers,-deployers,-repo,-rpm}
- delete artifacts
See https://github.com/Juniper/contrail-ansible-deployer/wiki/Contrail-with-Openstack-Kolla .
Set CONTAINER_REGISTRY
to registry:5000
to use containers built in the previous step.
Instead of step 5 above (which runs scons
inside make
), you can use scons
directly. The steps 1-4 are still required.
cd /root/contrail
scons # ( or "scons test" etc)
NOTE:
Above example build whole TungstenFabric project with default kernel headers and those
are headers for running kernel (uname -r
). If you want to customize your manual build and
use i.e newer kernel header take a look at below examples.
In case you want to compile TungstenFabric with latest or another custom kernel headers installed
in contrail-developer-sanbox
container, then you have to run scons with extra arguments:
RTE_KERNELDIR=/path/to/custom_kernel_headers scons --kernel-dir=/path/to/custom_kernel_headers
To alter default behaviour and build TF without support for DPDK just provide the --without-dpdk
flag:
scons --kernel-dir=/path/to/custom_kernel_headers --without-dpdk
To build only specific module like i.e vrouter
:
scons --kernel-dir=/path/to/custom_kernel_headers vrouter
To build and run unit test against your code:
RTE_KERNELDIR=/path/to/custom_kernel_headers scons --kernel-dir=/path/to/custom_kernel_headers test
Note: only RedHat 7 and CentOS 7 are supported at this time!
- Clone this repository to a directory on a VM.
- Run
vm-dev-env/init.sh
(you might be asked for your password as some steps require the use of sudo). a. You can also runvm-dev-env/init.sh -n
if you don't want to clone work directory on a VM. Then you have to mount sandbox to directory namedcontrail
next tocontrail-dev-env
. - Run
make fetch_packages
to pull dependencies tocontrail/third_party
- Run
sudo ./startup.sh -b
to start required containers. - You can use the Makefile targets described above to build contrail.