This is an old revision of the document!
Project Name:
Project description:
Summary
The CI project provides the starting point for all OPNFV development activities. It starts by integrating stable versions of basic upstream projects, and from there creates a full development environment for OPNFV including automatic builds and basic verification.
Select a basic set of upstream projects to be integrated in the first step
Select a basic hardware definition for the build servers and for the basic verification
Select the tools for code repository, build processes and automation
Define the image formats for code deployment in the test environment
Define the branching rules for the code repositories
Provide the code repositories
Integrate the basic set of upstream projects
Implement build process for developers
Implement automatic build process on central servers
Provide or implement basic test objects (VNFs and VNFM, NFVO)
Provide necessary OPNFV glue code to integrate different upstream project codes.
Implement automatic process for basic verification of the build images on central servers
Implement the process for continuous upgrade to newer versions of upstream projects
Implement the process for adding more upstream projects to the automated build and verification
Execute the continuous automated builds and basic verification
The above topics interlink to each other very closely, so they are bundled in a single project.
Basic set of upstream projects
The initial set was already identified during face-to-face on October 2, 2014:
Open Stack - augmenting and starting on top, subprojects to be selected, e.g.:.
Electron(NFV Open Platform Management Module) – New CLI
Keystone (Identity Module)
Nova (Compute Module)
Glance (Image Catalog)
Neutron (Network module) / with SDN option through ODL like project.
Cinder (Block Storage) /with CEPH option for integration and
Swift (Object Storage)
Horizon (Dashboard/
GUI) – [Electron Dashboard as Horizon Extension]
Heat (Orchestration of Stack)
Cielometer (Telemetry Module)
KVM / QEMU / libvirt (Support under Nova)
Open Daylight (Support along with Neutron)
Linux Kernel ( Supported Compute nodes)
OVS (DPDK/ODP) note: OVS is known to be too slow, so need to enhance and provide alternate to meet the SDN/DP latency & scale requirements
CEPH - block, data, image… (can start with Cinder and progress to Ceph as it evolves; some concerns, but use as start point and add alternate solutions later)
The initial set is meant to be as small as possible, so the initial environment can be provided early.
Of course together with any of those projects, also all dependencies, e.g. MySQL (or some other SQL DBs) as the database, RabbitMQ (or some other MQs) as the message bus, etc.. must be included. This includes selection of some alternatives or providing multiple options in later steps.
Additional upstream projects will be added when the initial process is established.
Examples of upstream projects that may be added later:
Guidelines for selection of upstream code:
The Source code meets the requirements of SWA-1-5 as per NFV specs to a larger extent and there is larger community acceptance of the same.
The Source code is Open source and with no License or IPR restrictions with proper releases from the Community and or Vendors associated.
The Source code is interafacable with minimum efforts and fit the OPNFV framework.
The Community or Vendor is willing to contribute and develop the source in OPNFV community to make it acceptable for alignment with upstream releases.
The timelines of upstream code availability is in accordance with OPNFV time lines.
Technical Steering Committee will have final say in accepting or rejecting the Contribution and upstream codes to ensure fair process. The objective is to ensure that Stack’s build for OPNFV 1.0 are consistent with Reference Models in Normative documents of NFV.
Basic Hardware selection
Octopus will create a hierarchical build system that uses the build tools as defined by each of the upstream projects and combines them via some scripting. Therefore the necessary tools will be a superset of the tools used by the upstream projects.
In some cases however, OPNFV may also just use complete binaries from an upstream project. In that case, OPNFV doesn’t need to use the build process of upstream projects again, but then patches for the upstream project cannot be developed or verified in OPNFV environment.
Additional tools need to be selected for the automated (periodic) build and basic verification, as well as deployment of the build images on target servers in the test environments.
Examples:
Code repository: git /Github or mercurial or svn
Scripting: python/bash and Orchestration tools like Salt/Ansible for VNF lifecycle
Automation: Jenkins
Development: DevStack
Deployment: Pacstack/Stackforge & Sleeted Vendor Offerings for reference implementation
Verification: Tempest
NFVI Tools – Vagrant, Cobbler and Baremetal builders like Ironic
Service Orchestration : Java based for North Bound if taken up in NFVOPS 1.0
…
Select the format to match all build tools and deployment requirements e.g. qcow2 with metatdata in container formats (OVF) and other qemu image converters if IaaS platform lacks any
Define the branching rules for the code repositories
Clearly define when branches in the repositories shall be created or merged.
The branching strategy needs to define both:
Usage of branching by OPNFV development (6 monthly cycle with few snapshots)
Usage of branches of upstream projects and their relation to branching in OPNFV repository (e.g. periodic merge from upstream branches after their successful builds or only use stable branches), also how to use branching when patches to upstream projects are contributed to the upstream project but already active in OPNFV, etc.
Provide the code repositories
Provision and make available to all developers. (All via Github)
Maintain the repository.
Integrate the basic set of upstream projects
Develop the changes on the basic set of upstream project that are necessary to make them run together as a basis for an NFVI + VIM layer as defined in the NFV architectural framework.
Implement build process for developers
Develop a simple build system that can be used by the developers of OPNFV. (e.g. Can use DevStack extensions for OPNFV)
Best practice would be to minimize differences to central build.
Implement automatic build process on central servers
Develop automation of the build process.
Decide on frequency (e.g. start biweekly and bring it down to daily) and execute the builds.
Tagging of the builds.
Provide or implement basic test objects (VNFs, and VNFM, NFVO)
Select from open source or implement basic test objects to be used for verification. (like Tempest Integration test Suite in Openstack)
Implement automatic process for basic verification of the build images on central servers
Develop automation of the basic verification using the test objects.
Implement the process for continuous upgrade to newer versions of upstream projects
(controller Sourcing based on Gerrit Approvals)
While all previous steps just create a single version of the OPNFV platform and development like in other open source projects, this step provides the environment to synchronize the OPNFV build process with upstream projects as they move to newer versions.
Note that Octopus will not be responsible for the decision when to synchronize, but provide the necessary mechanisms in the automated build and verification.
Implement the process for adding more upstream projects to the automated build and verification
(TSC Approval Basis)
Adding more upstream projects in many cases will need adjustments in the tool chain.
Execute the continuous automated builds and basic verification
(CI with Release testing)
Octopus covers both the initial creation of the development and build environment, as well as maintaining the environment and executing the automated builds and tests.
Scope:
Documentation: (optional, Project Categories: Documention)
Dependencies:
Committers and Contributors:
Planned deliverables
Proposed Release Schedule: