Page tree
Skip to end of metadata
Go to start of metadata

OPNFV Project Integration Guidelines

In order for OPNFV projects to integrate into installers subscribed to Genesis they must interface with Genesis to create and approve requirements.  This page serves as the procedure for projects to follow in order to interface correctly with the Genesis project.

As previously stated by the Genesis project:

*It is the responsibility of the integrating project to support installers in adding their required functionality*.  This is a two-way agreement between Genesis/Installers and the project requesting integration, in which both parties agree to support the development work of implementing a requirement into installers. Note that the Genesis team provides help, support, and guidance but does not actively drive the integration work needed within the installers for a new component. If a project proposes a requirement for installers in Genesis but does not support the implementation, it is very unlikely that the Genesis team will make the requirement a common requirement for all installers participating in Genesis.

OPNFV Project Integration Procedure

Please follow the below steps in order to engage with the Genesis team:

1. CREATION: Please create a Jira story detailing the specific requirement you want supported by all installers participating in Genesis. The Jira story should include the following information:

  1. Name of the Project making the requirement
  2. The lead of your project
  3. Description of the proposed requirement(s), including functionality provided and components affected, as well as the overall goal or purpose of these requirements
  4. The OPNFV release which you would like to implement these requirements
  5. A preliminary list of dependencies: kernel version, kernel modules (and versions), additional packages needed, patches needed (even if created by the requesting project)
  6. A preliminary summary of management objects: configuration, parameters, logs, etc.
  7. A pointer to the repo/code where your feature is implemented and where the sources for the integration into the different deployment tools/installers are found. If the integration code for the different installers isn't done yet, please supply a timeline/milestones by when you plan to deliver the required code.

You can find the JIRA requirements currently proposed here: https://jira.opnfv.org/issues/?jql=project%20%3D%20GENESIS

Please see an example for how to create a Jira ticket below.

2. REVIEW and DISCUSSION: The Genesis team will discuss your requirement using Jira comments and/or in a regular Genesis team meeting. It is your project's responsiblity to update the JIRA requirement with comments about the progress towards being able to implement/support your requirement. If your requirement is on the agenda of a Genesis meeting, the Genesis team will ask you to attend this meeting.  You should have someone from your project present in that meeting as your requirement will be discussed.  The Genesis team will then decide whether your proposal needs to be modified, needs more scope/information, or can be moved forward to eventually become a common requirement.

3. PROPOSAL: Once accepted to be moved forward, a proposed patch to the genesisreq repo will be created by a member of the Genesis team. The proposed patch will be up for review and voting in Gerrit and will document your requirement in detail and reference common code provided.  The creation of a patch does not yet mean your requirement is officially supported or approved.  It means that the Genesis team has agreed to consider your proposed requirement. 

4. ACCEPT/DECLINE: The Genesis team (which consists of a lead from every subscribing installer project) will vote +1,-1 for the requirement in Gerrit.  If a majority of leads vote +1, your requirement will be approved and officially be a part of that release for Genesis installers.  Otherwise the proposed patch will be abandoned in Gerrit. If your requirement is not approved as a common requirement, then you may still choose to engage with a select set of installer projects to get your feature supported by some set of installers.

5. IMPLEMENTATION: Assuming that your requirement got accepted, it becomes an common requirement across all installers participating in Genesis. You'll work jointly with the Genesis team to get your requirement implemented and supported by all installers participating in Genesis.

6. COMPLETE: Jira tickets will be set to "resolved" if all installers have successfully implemented the new requirement.

Background: The Genesis team uses the different tools in the following way:

  • JIRA is used “main entry gate” and “discussion forum” for requirements, where thr Genesis team discusses things and once the team has a common understanding a team member will create a patch, which reflects the discussion. This also means that the patch isn’t necessarily a 1:1 copy of the text in Jira. It will reflect the discussion the team hand and could also be more elaborate and more detailed than the simple high-level statement in Jira. This also means that the description of the patch in Gerrit is typically briefer and not the same as the contents of the patch.
  • Gerrit is used as a review _and_ voting vehicle, where the Genesis team also do final tweaks to and wordsmithing of the text and/or code entered.
  • Genesisreq git repository is the official “source of truth” for the Genesis team.

Creating Jira ticket for a new requirement

  1. Select Project: Genesis
  2. Select Issue Type: "Story". Story allows subtasks per installer to be created. That way we allow for installer specific work/discussion/analysis to be created.
  3. Name of the Project making the requirement
  4. The lead of your project
  5. Summarize your new requirement in a few words: Start with “Requirement: ...”
  6. Provide a detailed description of your requirement. Also provide a link to the repo/code where your feature is implemented and where the sources for the integration into the different deployment tools/installers are found. If the integration code for the different installers isn't done yet, please supply a timeline/milestones by when you plan to deliver the required code.
  7. Name the OPNFV release which you would like to implement these requirements
  8. Pick suitable labels: R2 (for Brahmaputra release), UXreq (for a requirement on user-experience); Other lables include e.g. Sysreq for system/component requirements
  9. Choose an Epic. Right now 3 Epics are defined for Genesis (if you believe you need another Epic, contact the Genesis committers):
    1. Target system requirements: Common software and hardware components
    2. Common software artifacts (scripts, etc.)
    3. User Experience: Requirements for a common user experience created by all installers
  10. Hit “create” to get your Jira ticket created
  • No labels