Page Status: DRAFT - This page is being actively composed. This message will be removed once the document is complete.
Overview
The goal of the VNF Guidelines and Requirements project is to provide guidance to VNF providers on the guidelines, rules, and specifications to which a VNF must adhere to correctly onboard and operate within ONAP. These rules span across the VNF's lifecycle and are influenced by the various components that comprise ONAP as well as various industry standards that are required for interoperability.
This project welcomes and encourages contributions, feedback, and inquiries through a variety of mechanisms. The intent of this guide is to inform a potential contributor of the various options available to them, and provide instructions on how to use those mechanisms.
Since this project is sub-project of the ONAP community, most of the ways to contribute our consistent with the standard tools used across ONAP. Please refer to the Getting involved with the ONAP community page for general information on getting involved with ONAP.
Available Options
The method for contributing or interacting with the VNF Requirements project depends on the type of contribution. Please refer to the following table for guidance on the best method to use.
Contribution Type | Method(s) |
---|---|
General questions, feedback, or support requests | Leverage the ONAP mailing lists. Send an email to onap-discuss@lists.onap.org and use the project hashtag #vnfrqts in the subject line of your email. |
Staying apprised of progress or collaborating on new work | Attend the weekly VNF Requirements project meetings. Review prior meeting minutes Additionally you can register for a Linux Foundation ID, and sign into Gerrit and/or JIRA to repository commits and JIRA issues.
|
Submitting Bugs | If you find an issue in the VNF Requirements project in either the ONAP Developer Guide or the ONAP Wiki, please submit a JIRA ticket under the VNF Requirements project Project: VNF Requirements Issue Type: Bug Please include the link to the page in question and if applicable the requirement(s) IDs that are impacted. |
Contributing Updates to VNF Provider Guidelines and Requirements | We welcome both new requirements and revisions to existing requirements and content. Before contributing the content, please familiarize yourself with the VNFRQTS Requirement and Documentation Standards. Our preferred form of contribution is to submit changes as Gerrit Reviews against the target VNF Requirements repository (see Submitting Gerritt Reviews for more details) If you are proposing substantial changes to the project or the change requires discussion, then we encourage you to create a Proposal on the ONAP VNF Requirements Project Wiki to introduce the topic first. Please refer to the Proposals page for more details. If you do not feel comfortable with the tool chain required to submit changes directly to the reStructuredText via Gerrit reviews, then we would still like to support your contributions and encourage you to put the details of your changes into JIRA. Project: VNF Requirements Issue Type: Task Summary: Short summary of the change In the Description field please include the following details:
If you are submitting a ticket, then you are encouraged to attend the VNF Requirements weekly meeting if your schedule permits. |
Submitting Gerrit Reviews
The easiest way for the VNF Requirements project to accept and incorporate changes is through merge/review requests via Gerrit. This will enable the team and community to review your proposed changes in context,collaborate on changes, and ensure contributions adhere to the standards of the tool chain required to build the documentation.
Contributing in this manner will require the setup of some tools on your local machine or environment.
Prerequisites
- Linux Foundation ID: You will need this to access JIRA and Gerrit. You can register for an ID here.
Knowledge of reStructuredText (RST): All documentation at ONAP is authored in RST. For the most part you can follow the style of other requirements and content without being an RST expert, but understanding basics may be useful. The ONAP Documentation project has some useful guides and tutorials here.
- Python 2.7, 3.6+: You will not need to write any Python code, but it is required to generate the documentation from reStructuredText. If needed, you can find installation instructions for your system here.
- Git: This is the version control tool used by ONAP. If not present on your system, then refer to Git's Getting Started - Installation Guide for more information
- Git Review: This is the command line extension to Git to enable changes to be submitted to review to Geritt. This needs to be installed after you have installed Git and Python.
Tox: This is a tool to run the build. It must be installed after you install Python. Install it using pip.
> pip install tox
- VNF Requirements Standards: Familiarize yourself with the VNFRQTS Requirement and Documentation Standards
Setup
Before submitting your first change, you will need to configure Git and Gerrit to work together. That is outside the scope of this guide, but you can find more information here.
Process
- Before submitting a change, open a JIRA ticket to introduce the change.
- Project: VNF Requirements
- Issue Type: Story for changes that can be incorporated via a single change, Epic if the updates will require multiple commits. If you need an Epic, then you will need a story for each set of changes you wish to make. If the changes you are proposing are substantial, then you may need to create an entry in Proposals for discussion before proceeding with your requirement changes.
- Summary: Descriptive summary of the changes to be made
- Fix Version: Target ONAP release for your changes
- Clone the appropriate repository for your content (see VNFRQTS Requirement and Documentation Standards for guidance and links).
- Navigate to the directory you cloned the repository into
Run the following command to generate the documentation and verify everything works properly
build docs<project-dir> tox -e docs
- If everything works properly, this will generate the HTML documentation in the
docs\_build\html
directory - If you will be adding requirements (NOTE: this is only applicable when working on the
vnfrqts/requirements
repository), then you will need a block of requirement IDs to use. Determine the number of requirements you intend to add and use themake_ids.py to generate the requirement IDs (don't worry you can always generate more)
The following command will generate 5 random, unique requirement IDs for your use. The requirement IDs you generate will not conflict with any requirement already in the document, but they are not strictly reserved. The build process will throw an error if your requirement ID is a duplicate.
Generate Requirement IDs<project-dir> python make_ids.py 5 R-##### R-##### R-##### R-##### R-#####
Edit the RST documents in the docs folder. Be sure to format any requirements according using the .. req:: directive as defined in the standards.
Example Requirement.. req:: :id: R-12345 :keyword: MUST :target: VNF PACKAGE :introduced: casablanca :impacts: sdc :validation_mode: static The VNF Package **MUST** include element XYZ as part of the CSAR package in the ABC directory
- After you have made your changes, rebuild the documentation using the
tox -e docs
command, and view the changes in browser to ensure they are formatted correctly. This will also regenerate the JSON version of the requirements that are located indocs/data/needs.json. This is the file make_ids.py uses to ensure new requirement IDs do not conflict and the JSON version is also downloadable via the Requirements List chapter of the Requirements document.