Octopus
TBD
OPNFV will use many upstream open source projects to create the reference platform. All these projects are developed and tested independently and in many cases, not have use cases of other projects in mind. Therefore it is to be expected that integration of these projects probably will unveil some gaps in functionality, since testing the OPNFV use cases needs the interworking of many upstream projects. Thus this integration work will bring major benefit to the community.
Therefore the goal of the CI project – Octopus – is to quickly provide prototype integration of a first set of upstream projects. Step by step this later will be evolved to a full blown development environment with automated test and verification as a continuous integration environment, supporting both, the parallel evolutionary work in the upstream projects, and the improvement of NFV support in this reference platform.
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. This is a very complex task and therefore needs a step by step approach. At the same time it is urgent to have a basic environment in place very soon.
The following list shows all necessary tasks for creation of the final environment and gives some idea how the work will be approached. More details need to be worked out during the project lifetime; the appendix provides some more details that are already available.
The above topics interlink to each other very closely.
The initial set was already identified during face-to-face on October 2, 2014:
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.
Octopus will create the complete basic development and build environment for OPNFV and start the periodic execution of the automatic build and basic verification. It will provide the processes for development, for upgrade to newer versions of upstream projects and for adding more components or upstream projects.
Octopus will not decide when and which upstream project to be added to OPNFV.
Octopus will provide the basic test and verification environment. Details will be specified later.
The whole environment as created by Octopus will be well documented with user guides for all developers. For any specifics in the upstream projects, it will refer to the documentation in the upstream project.
Require Management API for OPNFV Platform and Tools for OPNFV CLI/GUI.
The first step of integration has no dependency on other OPNFV projects. However it depends on decisions that will be made outside the project, like for example the selection of Linux distributions, which may need TSC approval.
Test and verification in later project stages is dependent on the test objects provided by VNF deployment test cases project.
Continuous integration in later project stages is dependent on the Simultaneous Release project.
The first step will be to generate a build of all the upstream components.
This project will be executed using Agile Development methodology. This Appendix provides exemplary tasks and some other details at project execution for informational purpose. Those exemplary tasks and details are living content, and subject to further evolution during project lifetime. Jira tool will be used to further develop the details.
The initial set was already identified during face-to-face on October 2, 2014:
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:
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:
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
Clearly define when branches in the repositories shall be created or merged.
The branching strategy needs to define both:
Provision and make available to all developers. (All via Github)
Maintain the repository.
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.
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.
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.
Select from open source or implement basic test objects to be used for verification. (like Tempest Integration test Suite in Openstack)
Develop automation of the basic verification using the test objects.
(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.
(TSC Approval Basis)
Adding more upstream projects in many cases will need adjustments in the tool chain.
(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.