Status | IMPLEMENTED |
---|---|
Submitter | |
Contributors | |
Proposed Release | Casblanca |
JIRA Ticket(s) |
For any contributors who would like to edit the VNF Requirements document.
The enhanced toolkit that we are proposing has been developed to help users edit the VNF Requirements documents in a quicker fashion, as well as adding more functional capabilities of the this project. Outlined in this document are the added tools we are proposing:
Current Process
All Requirements manually maintained within RST files.
- For example:
**Resource Description** ------------------------- * R-77707 The VNF provider **MUST** include a Manifest File that contains a list of all the components in the VNF package. * R-66070 The VNF Package **MUST** include VNF Identification Data to uniquely identify the resource for a given VNF provider. The identification data must include: an identifier for the VNF, the name of the VNF as was given by the VNF provider, VNF description, VNF provider, and version. * R-69565 The VNF Package **MUST** include documentation describing VNF Management APIs. The document must include information and tools for:
- For example:
No additional information about individual requirements is maintained.
- For example:
- Release
- Testable
- etc.
- For example:
Requirements must be manually updated in multiple locations within the RST files.
- Requirements must be managed within the proper Chapter and Section, AS WELL AS within the Appendix.
Proposed Process
Objectives
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:
.. req:: :id: R-01334 :keyword: MUST :target: VNF :links_incoming: R-01335 The VNF **MUST** conform to the NETCONF RFC 5717, Partial Lock Remote Procedure Call
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 |
test_parse_yaml
5 Comments
Steven Wright
the v. "defined keyword" metadata field should be changed to "RFC2119 keyword" or similar.
the I. "description" metadata field should have a length constraint of one sentence.
Hagop Bozawglanian
Hey Steven! I updated the "defined keyword" metadata to "RFC2119 Keyword", but for the "description" field, when you say one sentence, do you mean one line?
Because if you look at the example above for
R-66070
under the Current Process Flow section, you can see there are requirements with multiple sentences.Steven Wright
The discussion under VNFRQTS Requirement Format discussion request requirements to be formatted as single sentences.
if we have multiple sentence requirements, then we should raise the bug reports to fix these.
Brian Hedstrom
Should 'target' include PNF as well, since it currently includes VNF and XNF? Does VNF Package imply the TOSCA Template?
Trevor Lovett
I don't have an issue with adding PNF to target. At this point we only have some general PNF guidelines (not specific PNF requirements), but we can add it for future use if needed.
And, yes - the VNF Package would refer to the TOSCA onboarding package unless Steven Wright has a different interpretation.