Page Status: DRAFT
VNF Requirements Project Overview
The intent of the VNF Requirement and Guidelines project is to inform VNF providers of the standards, specifications, and guidlines to which they should adhere when targeting the ONAP platform. These requirements and guidelines will support the ONAP Architecture Principles, and ensure experience for VNF providers across the VNF lifecycle. See the VNF Requirements Charter for more information.
Objectives of This Guide
This guide targets people that may want to contribute content to the project or have a better understanding of the standards that apply to the requirements. These standards will attempt to address the following concerns:
- Ensure the content is appropriate for inclusion within the project deliverables
- Guide contributors on the proper sub-project the provided content should target (e.g. guidelines, requirements, etc.)
- Establish a consistent format for all content
- Standardize the metadata collected for each requirement
Requirement Structure and Repositories
The VNF Requirements Project comprises of several different document repositories (i.e. sub-projects) that provide guidance to VNF Providers from various perspectives. The following table outlines the repository where the content is stored, the location of the latest published version of the content on the official ONAP documentation site, the description of the content. When contributing content, please familiarize yourself with the various projects and target the content to the appropriate repository.
Repo | Description | Deliverable document Title(s) |
---|---|---|
/guidelines | This includes objectives and motivations for the VNF Requirements work as well as forward looking, narrative text for use in prototype RFP text. | |
/requirements | This includes formalized, uniquely numbered requirements that outline the requirements and specifications to which a VNF provider should adhere. Requirements will strive to be discrete and testable where possible, and will follow the guidance of RFC 2119 of requirement key words (e.g. SHOULD, MAY, etc.) for all numbered requirements. | |
/usecases | Documents VNF specific use cases in support of ONAP E2E use cases illustrating behavior, sequences of operation, variants, error conditions, etc. There may be multiple use cases associated with a single requirement. | |
/testcases | This expands the use case template structure to supply the additional fields necessary to describe a test scenario. There may be multiple test case descriptions associated with a single use case |
General Standards
The following standards apply to all sub-projects within the VNF Requirements Project.
- As VNF Requirements project is an ONAP project, all content must adhere to the general documentation standards defined in Creating Documentation section of the ONAP Developer Guide.
- All content must be written in reStructuredText (RST) with all warnings and errors resolved.
- Wherever possible, let RST handle numbering of content. This includes ordered lists, section numbers, footnotes, etc. This ensure content can be re-arranged easily with less likelihood of breaking numbering conventions.
Guideline Standards
TODO
Requirement Standards
This proposal aims to address the following objectives:
- Associate standard, structured metadata with each requirement to aid in a variety of use cases such as dependency tracking, searching, filtering, and reporting.
- Export requirements in a machine-readable format for use by other projects such as the VNF Validation Project.
- Generate different formats and outputs without duplicating requirement content (ex: appendices, tables, CSV files, etc.)
- Provide traceability within the document between requirements, test cases, and other items within the documents.
Approach
Requirements will still be maintained in the reStructuredText file, but they will be shifted to structured directives using the sphinxcontrib-needs extension. This extension provides a way to meet each of the needs above.
Here is an example of a requirement after the conversion:
Requirement Example
|
These requirement definitions can be processed by the sphinxcontrib-needs extension and used in a variety of ways.
- Summary tables can be created via a needtable directive which provides a number of capabilities such as:
- Export to a variety of formats such as CSV, Excel, and PDF
- Filtering
- Sorting
- All requirements can be exported as JSON file for consumption by other projects.
- By default metadata is hidden in the HTML document, but can easily be expanded to allow readers to learn more about the requirement.
Metadata Standards
The following table outlines the proposed standard metadata elements that will be associated with the requirements. This list may change over time.
Field Name | Required vs. Optional | Data Type | Valid Values/Format | Notes |
---|---|---|---|---|
target | Required | String | VNF, VNFC, VNF PROVIDER, VNF HEAT ORCHESTRATION TEMPLATE, VNF PACKAGE, PNF, XNF | The component to which the requirement applies. |
keyword | Required | String | MUST, MUST NOT, SHOULD, SHOULD NOT, MAY | The RFC 2119 keyword for the requirement |
introduced | Optional | String | lower case release name (ex: bejing, casablanca) | The release the requirement was initially introduced |
updated | Optional | String | lower case release name | The release the requirement was last modified |
impacts | Optional | List of String | Comma separated list of ONAP components (ex: so, sdc) | The various ONAP components that need to be aware of any changes to the requirement |
validation_mode | Optional | String | static, stand_alone, in_service | How the requirement is validated: static - validated by statically inspecting the VNF package data stand_alone - validated by running tests against the VNF itself in_service - validated in the context of a full or partial ONAP deployment |
validated_by | Optional | List of String | Comma separated list: vvp, vnfsdk, sdc | Projects that implement validations of this requirement. |
test_case | Optional | RST Link | Link to source file that implement the test case | |
notes | Optional | String | Free form text | Short notes about the requirement |
ONAP/VNFRQTS VNF Requirements Discussion
Requirements should be single sentences using an RFC 2119 keyword { MUST | MUST NOT | SHOULD | SHOULD NOT | MAY }. The keyword should be bold.
The Subject of the Requirements sentence should be limited to { VNF | VNF Package | VNFC | VDU }
Requirements should be individually numbered. Format initially will be R-xxxxx
Draft example of the .rst format for requirements:
* R-xxxxx VNFs **MUST** meet their own resiliency goals and not rely on the Network Cloud.
The .rst formatting of the requirements should be such that the documentation can extract a complete set of requirements as a table in an appendix.