1 .. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
3 .. Licensed under the Creative Commons License, Attribution 4.0 Intl.
4 (the "License"); you may not use this documentation except in compliance
5 with the License. You may obtain a copy of the License at
7 .. https://creativecommons.org/licenses/by/4.0/
9 .. Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
16 Requirement Changes Introduced in Dublin
17 ----------------------------------------
19 This document summarizes the requirement changes by section that were
20 introduced between the Casablanca release and
21 Dublin release. Click on the requirement number to
30 * **Requirements Added:** 64
31 * **Requirements Changed:** 275
32 * **Requirements Removed:** 40
35 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Client Requirements
36 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46 The VNF or PNF **MUST** provide Ansible playbooks that are designed to run
47 using an inventory hosts file in a supported format with only IP addresses
48 or IP addresses and VM/VNF or PNF names.
55 The VNF or PNF **MUST** load the Ansible Server SSH public key onto VNF or
56 PNF VM(s) /root/.ssh/authorized_keys as part of instantiation. Alternative,
57 is for Ansible Server SSH public key to be loaded onto VNF or PNF VM(s)
58 under /home/<Mechanized user ID>/.ssh/authorized_keys as part of
59 instantiation, when a Mechanized user ID is created during instantiation,
60 and Configure and all playbooks are designed to use a mechanized user ID
61 only for authentication (never using root authentication during Configure
62 playbook run). This will allow the Ansible Server to authenticate to
63 perform post-instantiation configuration without manual intervention and
64 without requiring specific VNF or PNF login IDs and passwords.
66 *CAUTION*: For VNFs or PNFs configured using Ansible, to eliminate the need
67 for manual steps, post-instantiation and pre-configuration, to
68 upload of SSH public keys, SSH public keys loaded during (heat)
69 instantiation shall be preserved and not removed by (heat) embedded
77 The VNF or PNF **MUST** support SSH and allow SSH access by the
78 Ansible server to the endpoint VM(s) and comply with the Network
79 Cloud Service Provider guidelines for authentication and access.
86 The VNF or PNF **MUST** provide the ability to remove root access once
87 post-instantiation configuration (Configure) is completed.
94 The VNF or PNF **MUST** define the "from=" clause to provide the list of IP
95 addresses of the Ansible Servers in the Cluster, separated by coma, to
96 restrict use of the SSH key pair to elements that are part of the Ansible
97 Cluster owner of the issued and assigned mechanized user ID.
104 The VNF or PNF **MUST** provide the ability to include a "from=" clause in
105 SSH public keys associated with mechanized user IDs created for an Ansible
106 Server cluster to use for VNF or PNF VM authentication.
113 The VNF or PNF **MUST** permit authentication, using root account, only
114 right after instantiation and until post-instantiation configuration is
122 The VNF or PNF **MUST** include as part of post-instantiation configuration
123 done by Ansible Playbooks the removal/update of the SSH public key from
124 /root/.ssh/authorized_keys, and update of SSH keys loaded through
125 instantiation to support Ansible. This may include creating Mechanized user
126 ID(s) used by the Ansible Server(s) on VNF VM(s) and uploading and
127 installing new SSH keys used by the mechanized use ID(s).
134 The VNF or PNF **MUST** provide Ansible playbooks that are designed to run
135 using an inventory hosts file in a supported format; with group names
136 matching VNFC 3-character string adding "vip" for groups with virtual IP
137 addresses shared by multiple VMs as seen in examples provided in Appendix.
144 The VNF or PNF **MUST** have routable management IP addresses or FQDNs that
145 are reachable via the Ansible Server for the endpoints (VMs) of a
146 VNF or PNF that playbooks will target. ONAP will initiate requests to the
147 Ansible Server for invocation of playbooks against these end
155 The VNF or PNF **MUST** have Python >= 2.6 on the endpoint VM(s)
156 of a VNF or PNF on which an Ansible playbook will be executed.
163 The VNF or PNF **MUST** provide Ansible playbooks that are designed to run
164 using an inventory hosts file in a supported format; with site group that
165 shall be used to add site specific configurations to the target VNF or PNF
173 The VNF or PNF **MUST** update the Ansible Server and other entities
174 storing and using the SSH keys for authentication when the SSH
175 keys used by Ansible are regenerated/updated.
177 **Note**: Ansible Server itself may be used to upload new SSH public
178 keys onto supported VNFs or PNFs.
181 Configuration Management > Ansible Standards and Capabilities > VNF or PNF Configuration via Ansible Requirements > Ansible Playbook Requirements
182 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
192 The VNF or PNF provider **MUST** assign a new point release to the updated
193 playbook set. The functionality of a new playbook set must be tested before
194 it is deployed to the production.
201 The VNF or PNF **SHOULD NOT** use playbooks that make requests to
202 Cloud resources e.g. Openstack (nova, neutron, glance, heat, etc.);
203 therefore, there is no use for Cloud specific variables like Openstack
204 UUIDs in Ansible Playbook related artifacts.
206 **Rationale**: Flows that require interactions with Cloud services e.g.
207 Openstack shall rely on workflows run by an Orchestrator
208 (Change Management) or other capability (such as a control loop or
209 Operations GUI) outside Ansible Server which can be executed by a
210 APPC/SDN-C. There are policies, as part of Control Loop
211 models, that send remediation action requests to an APPC/SDN-C; these
212 are triggered as a response to an event or correlated events published
220 The VNF or PNF provider **MUST** deliver a new set of playbooks that
221 includes all updated and unchanged playbooks for any new revision to an
222 existing set of playbooks.
229 The VNF or PNF **MUST** return control from Ansible Playbooks only after
230 all tasks performed by playbook are fully complete, signaling that the
231 playbook completed all tasks. When starting services, return control
232 only after all services are up. This is critical for workflows where
233 the next steps are dependent on prior tasks being fully completed.
240 The VNF or PNF **SHOULD** use playbooks that are designed to
241 automatically 'rollback' to the original state in case of any errors
242 for actions that change state of the VNF or PNF (e.g., configure).
244 **Note**: In case rollback at the playbook level is not supported or
245 possible, the VNF or PNF provider shall provide alternative rollback
246 mechanism (e.g., for a small VNF or PNF the rollback mechanism may rely
247 on workflow to terminate and re-instantiate VNF VMs and then re-run
248 playbook(s)). Backing up updated files is also recommended to support
249 rollback when soft rollback is feasible.
256 The VNF or PNF **MUST** utilize information from key value pairs that will
257 be provided by the Ansible Server as "extra-vars" during invocation to
258 execute the desired VNF or PNF action. The "extra-vars" attribute-value
259 pairs are passed to the Ansible Server by an APPC/SDN-C as part of the
260 Rest API request. If the playbook requires files, they must also be
261 supplied using the methodology detailed in the Ansible Server API, unless
262 they are bundled with playbooks, example, generic templates. Any files
263 containing instance specific info (attribute-value pairs), not obtainable
264 from any ONAP inventory databases or other sources, referenced and used an
265 input by playbooks, shall be provisioned (and distributed) in advance of
266 use, e.g., VNF or PNF instantiation. Recommendation is to avoid these
267 instance specific, manually created in advance of instantiation, files.
274 The VNF or PNF **MUST** use playbooks designed to allow Ansible
275 Server to infer failure or success based on the "PLAY_RECAP" capability.
277 **Note**: There are cases where playbooks need to interpret results
278 of a task and then determine success or failure and return result
279 accordingly (failure for failed tasks).
286 The VNF or PNF **MUST** write to a response file in JSON format that will
287 be retrieved and made available by the Ansible Server if, as part of a VNF
288 or PNF action (e.g., audit), a playbook is required to return any VNF or
289 PNF information/response. The text files must be written in the main
290 playbook home directory, in JSON format. The JSON file must be created for
291 the VNF or PNF with the name '<VNF or PNF name>_results.txt'. All playbook
292 output results, for all VNF or PNF VMs, to be provided as a response to the
293 request, must be written to this response file.
300 The VNF or PNF **MUST** support Ansible playbooks that are compatible with
301 Ansible version 2.6 or later.
308 The VNF or PNF **MUST NOT** use any instance specific parameters
316 The VNF or PNF **MUST** make available playbooks that conform
317 to the ONAP requirement.
324 The VNF or PNF **SHOULD** use available backup capabilities to save a
325 copy of configuration files before implementing changes to support
326 operations such as backing out of software upgrades, configuration
327 changes or other work as this will help backing out of configuration
335 The VNF or PNF **MUST** support each APPC/SDN-C VNF or PNF action
336 by invocation of **one** playbook [#7.3.4]_. The playbook will be
337 responsible for executing all necessary tasks (as well as calling other
338 playbooks) to complete the request.
341 Configuration Management > Chef Standards and Capabilities > VNF or PNF Configuration via Chef Requirements > Chef Client Requirements
342 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
353 The VNF or PNF **MAY** expose a single endpoint that is
354 responsible for all functionality.
361 The VNF or PNF **MUST** have the chef-client be preloaded with
362 validator keys and configuration to register with the designated
363 Chef Server as part of the installation process.
370 The VNF or PNF **MUST** be installed with Chef-Client >= 12.0 and Chef
371 push jobs client >= 2.0.
378 The VNF or PNF **MUST** have routable FQDNs for all the endpoints
379 (VMs) of a VNF or PNF that contain chef-clients which are used to register
380 with the Chef Server. As part of invoking VNF or PNF actions, ONAP will
381 trigger push jobs against FQDNs of endpoints for a VNF or PNF, if required.
384 Configuration Management > Chef Standards and Capabilities > VNF or PNF Configuration via Chef Requirements > Chef Roles/Requirements
385 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
396 The VNF or PNF **MUST** accept all necessary instance specific
397 data from the environment or node object attributes for the VNF or PNF
398 in roles/cookbooks/recipes invoked for a VNF or PNF action.
405 The VNF or PNF **MUST** over-ride any default values for
406 configurable parameters that can be set by ONAP in the roles,
407 cookbooks and recipes.
414 The VNF or PNF Package **MUST** have appropriate cookbooks that are
415 designed to automatically 'rollback' to the original state in case of
416 any errors for actions that change state of the VNF or PNF (e.g.,
424 The VNF or PNF Package **MUST** include a run list of
425 roles/cookbooks/recipes, for each supported VNF or PNF action, that will
426 perform the desired VNF or PNF action in its entirety as specified by ONAP
427 (see Section 7.c, APPC/SDN-C APIs and Behavior, for list of VNF or PNF
428 actions and requirements), when triggered by a chef-client run list
436 The VNF or PNF Package **MUST** include all relevant Chef artifacts
437 (roles/cookbooks/recipes) required to execute VNF or PNF actions requested
438 by ONAP for loading on appropriate Chef Server.
445 The VNF or PNF **MUST** populate an attribute, defined as node
446 ['PushJobOutput'] with the desired output on all nodes in the push job
447 that execute chef-client run if the VNF or PNF action requires the output
448 of a chef-client run be made available (e.g., get running configuration).
455 The VNF or PNF **MUST** Upon completion of the chef-client run,
456 POST back on the callback URL, a JSON object as described in Table
457 A2 if the chef-client run list includes a cookbook/recipe that is
458 callback capable. Failure to POST on the Callback Url should not be
459 considered a critical error. That is, if the chef-client successfully
460 completes the VNF or PNF action, it should reflect this status on the Chef
461 Server regardless of whether the Callback succeeded or not.
468 The VNF or PNF **SHOULD** support callback URLs to return information
469 to ONAP upon completion of the chef-client run for any chef-client run
470 associated with a VNF or PNF action.
472 - As part of the push job, ONAP will provide two parameters in the
473 environment of the push job JSON object:
475 - "RequestId" a unique Id to be used to identify the request,
476 - "CallbackUrl", the URL to post response back.
478 - If the CallbackUrl field is empty or missing in the push job, then
479 the chef-client run need not post the results back via callback.
486 The VNF or PNF **MUST NOT** use any instance specific parameters
487 for the VNF or PNF in roles/cookbooks/recipes invoked for a VNF or PNF
495 The VNF or PNF **MUST** update status on the Chef Server
496 appropriately (e.g., via a fail or raise an exception) if the
497 chef-client run encounters any critical errors/failures when
498 executing a VNF or PNF action.
501 Configuration Management > Controller Interactions With VNF or PNF > Configuration Commands
502 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
513 The VNF or PNF **MUST** support APPC/SDN-C ``Configure`` command.
520 The VNF or PNF **MUST** support APPC ``Audit`` command.
527 The VNF or PNF **MUST** support APPC ``ConfigRestore`` command.
534 The VNF or PNF **MUST** support APPC/SDN-C ``ConfigScaleOut`` command.
541 The VNF or PNF **MUST** support APPC ``ConfigModify`` command.
548 The VNF or PNF **MUST** support APPC ``ConfigBackup`` command.
551 Configuration Management > Controller Interactions With VNF or PNF > HealthCheck and Failure Related Commands
552 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
563 The VNF or PNF **MUST** support APPC/SDN-C ``HealthCheck`` command.
566 Configuration Management > Controller Interactions With VNF or PNF > Lifecycle Management Related Commands
567 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
578 The VNF or PNF **MUST** support APPC/SDN-C ``UpgradeBackOut`` command.
585 The VNF or PNF **MUST** support APPC/SDN-C ``UpgradeBackup`` command.
592 The VNF or PNF **MUST** support APPC/SDN-C ``UpgradePostCheck`` command.
599 The VNF or PNF **MUST** support APPC/SDN-C ``ResumeTraffic`` command.
606 The VNF or PNF **MUST** support APPC/SDN-C ``UpgradePrecheck`` command.
613 The VNF or PNF **MUST** support APPC/SDN-C ``UpgradeSoftware`` command.
620 The VNF or PNF **MUST** support APPC ``StartApplication`` command.
627 The VNF or PNF **MUST** support APPC/SDN-C ``QuiesceTraffic`` command.
634 The VNF or PNF **MUST**, if serving as a distribution point or anchor point for
635 steering point from source to destination, support the ONAP Controller's
636 ``DistributeTraffic`` command.
643 The VNF or PNF **MUST** support APPC ``StopApplication`` command.
646 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > Configuration Management
647 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
658 The VNF or PNF **MUST** provide a NETCONF interface fully defined
659 by supplied YANG models for the embedded NETCONF server.
666 The VNF or PNF **MUST** include a NETCONF server enabling
667 runtime configuration and lifecycle management capabilities.
670 Configuration Management > NETCONF Standards and Capabilities > VNF or PNF Configuration via NETCONF Requirements > NETCONF Server Requirements
671 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
682 The VNF or PNF **SHOULD** support TLS as secure transport for the NETCONF
683 protocol according to [RFC7589].
694 The VNF or PNF **MUST** follow the data model update rules defined in
695 [RFC6020] section 10 for YANG 1.0 modules, and [RFC7950] section 11
696 for YANG 1.1 modules. All deviations from the aforementioned update
697 rules shall be handled by a built-in automatic upgrade mechanism.
704 The VNF or PNF **MUST** support parallel and simultaneous
705 configuration of separate objects within itself.
712 The VNF or PNF **MUST** implement the data model discovery and
713 download as defined in [RFC6022].
720 The VNF or PNF **MUST** implement the ``:validate`` capability.
727 The VNF or PNF **MUST** allow all configuration data to be
728 edited through a NETCONF <edit-config> operation. Proprietary
729 NETCONF RPCs that make configuration changes are not sufficient.
736 The VNF or PNF **MUST** support locking if a common object is
737 being manipulated by two simultaneous NETCONF configuration operations
738 on the same VNF or PNF within the context of the same writable running data
739 store (e.g., if an interface parameter is being configured then it
740 should be locked out for configuration by a simultaneous configuration
741 operation on that same interface parameter).
748 The VNF or PNF **SHOULD** implement the protocol operation:
749 ``delete-config(target)`` - Delete the named configuration
757 The VNF or PNF **MUST** release locks to prevent permanent lock-outs
758 when/if a session applying the lock is terminated (e.g., SSH session
766 The VNF or PNF **MUST** implement ``:confirmed-commit`` If
767 ``:candidate`` is supported.
774 The VNF or PNF **MUST** implement the protocol operation:
775 ``unlock(target)`` - Unlock the configuration data store target.
782 The VNF or PNF **SHOULD** conform its YANG model to RFC 6536,
783 "NETCONF Access Control Model".
790 The VNF or PNF **MUST** allow the entire configuration of the VNF or PNF to be
791 retrieved via NETCONF's <get-config> and <edit-config>, independently
792 of whether it was configured via NETCONF or other mechanisms.
799 The VNF or PNF **MUST** allow another NETCONF session to be able to
800 initiate the release of the lock by killing the session owning the lock,
801 using the <kill-session> operation to guard against hung NETCONF sessions.
808 The VNF or PNF **MUST** conform to the NETCONF RFC 6241,
809 "NETCONF Configuration Protocol".
816 The VNF or PNF **MUST** support sub tree filtering.
823 The VNF or PNF **MUST** implement the protocol operation:
824 ``get-config(source, filter`` - Retrieve a (filtered subset of
825 a) configuration from the configuration data store source.
832 The VNF or PNF **MUST** conform to the NETCONF RFC 5717,
833 "Partial Lock Remote Procedure Call".
840 The VNF or PNF **MUST** conform to the NETCONF RFC 4741,
841 "NETCONF Configuration Protocol".
848 The VNF or PNF PACKAGE **MUST** validated YANG code using the open
849 source pyang [#7.3.1]_ program using the following commands:
853 $ pyang --verbose --strict <YANG-file-name(s)> $ echo $!
860 The VNF or PNF **SHOULD** conform its YANG model to RFC 7223,
861 "A YANG Data Model for Interface Management".
868 The VNF or PNF **SHOULD** conform its YANG model to RFC 6991,
869 "Common YANG Data Types".
876 The VNF or PNF **MUST** support simultaneous <commit> operations
877 within the context of this locking requirements framework.
884 The VNF or PNF **MUST** implement the protocol operation:
885 ``kill-session(session``- Force the termination of **session**.
892 The VNF or PNF **SHOULD** conform its YANG model to RFC 7223,
893 "IANA Interface Type YANG Module".
900 The VNF or PNF **MUST** implement the protocol operation:
901 ``close-session()`` - Gracefully close the current session.
908 The VNF or PNF **MUST** release locks to prevent permanent lock-outs
909 when the corresponding <partial-unlock> operation succeeds.
916 The VNF or PNF **MUST** define all data models in YANG 1.0 [RFC6020] or
917 YANG 1.1 [RFC7950]. A combination of YANG 1.0 and YANG 1.1 modules is
918 allowed subject to the rules in [RFC7950] section 12. The mapping to
919 NETCONF shall follow the rules defined in this RFC.
926 The VNF or PNF **SHOULD** implement the protocol operation:
927 ``copy-config(target, source)`` - Copy the content of the
928 configuration data store source to the configuration data store target.
935 The VNF or PNF **MUST** support the ``:startup`` capability. It
936 will allow the running configuration to be copied to this special
937 database. It can also be locked and unlocked.
944 TThe VNF or PNF **MUST** support heartbeat via a <get> with null filter.
951 The VNF or PNF **MUST** guarantee the VNF or PNF configuration integrity
952 for all simultaneous configuration operations (e.g., if a change is
953 attempted to the BUM filter rate from multiple interfaces on the same
954 EVC, then they need to be sequenced in the VNF or PNF without locking either
955 configuration method out).
962 The VNF or PNF **MUST** fully support the XPath 1.0 specification
963 for filtered retrieval of configuration and other database contents.
964 The 'type' attribute within the <filter> parameter for <get> and
965 <get-config> operations may be set to 'xpath'. The 'select' attribute
966 (which contains the XPath expression) will also be supported by the
967 server. A server may support partial XPath retrieval filtering, but
968 it cannot advertise the ``:xpath`` capability unless the entire XPath
969 1.0 specification is supported.
976 The VNF or PNF **MUST** release locks to prevent permanent lock-outs
977 when a user configured timer has expired forcing the NETCONF SSH Session
978 termination (i.e., product must expose a configuration knob for a user
979 setting of a lock expiration timer).
986 The VNF or PNF **MUST** have the echo command return a zero value
987 otherwise the validation has failed.
994 The VNF or PNF **MUST** support a NETCONF server that can be mounted on
995 OpenDaylight (client) and perform the operations of: modify, update,
996 change, rollback configurations using each configuration data element,
997 query each state (non-configuration) data element, execute each YANG
998 RPC, and receive data through each notification statement.
1005 The VNF or PNF **MUST** implement the protocol operation:
1006 ``commit(confirmed, confirm-timeout)`` - Commit candidate
1007 configuration data store to the running configuration.
1014 The VNF or PNF **SHOULD** conform its YANG model to RFC 7407,
1015 "A YANG Data Model for SNMP Configuration", if Netconf used to
1016 configure SNMP engine.
1023 The VNF or PNF **MUST** conform to the NETCONF RFC 5277,
1024 "NETCONF Event Notification".
1031 The VNF or PNF **MUST** conform its YANG model to RFC 6470,
1032 "NETCONF Base Notifications".
1039 The VNF or PNF **MUST** conform to the NETCONF RFC 6242,
1040 "Using the Network Configuration Protocol over Secure Shell".
1047 The VNF or PNF **MUST** conform its YANG model to RFC 6087,
1048 "Guidelines for Authors and Reviewers of YANG Data Model specification".
1055 The VNF or PNF **SHOULD** implement the protocol operation:
1056 ``get-schema(identifier, version, format)`` - Retrieve the YANG schema.
1063 The VNF or PNF **MUST** implement the protocol operation:
1064 ``discard-changes()`` - Revert the candidate configuration
1065 data store to the running configuration.
1072 The VNF or PNF **MUST** implement the protocol operation:
1073 ``edit-config(target, default-operation, test-option, error-option,
1074 config)`` - Edit the target configuration data store by merging,
1075 replacing, creating, or deleting new config elements.
1082 The VNF or PNF **MUST** implement the protocol operation:
1083 ``lock(target)`` - Lock the configuration data store target.
1090 The VNF or PNF **MUST** implement both ``:candidate`` and
1091 ``:writable-running`` capabilities. When both ``:candidate`` and
1092 ``:writable-running`` are provided then two locks should be supported.
1099 The VNF or PNF **MUST** conform its YANG model to RFC 6244,
1100 "An Architecture for Network Management Using NETCONF and YANG".
1107 The VNF or PNF **MUST** implement the protocol operation:
1108 ``get(filter)`` - Retrieve (a filtered subset of) the running
1109 configuration and device state information. This should include
1110 the list of VNF or PNF supported schemas.
1117 The VNF or PNF **SHOULD** conform its YANG model to RFC 7317,
1118 "A YANG Data Model for System Management".
1125 The VNF or PNF **MUST** support ``:rollback-on-error`` value for
1126 the <error-option> parameter to the <edit-config> operation. If any
1127 error occurs during the requested edit operation, then the target
1128 database (usually the running configuration) will be left unaffected.
1129 This provides an 'all-or-nothing' edit mode for a single <edit-config>
1137 The VNF or PNF **MUST** allow the NETCONF server connection
1138 parameters to be configurable during virtual machine instantiation
1139 through Heat templates where SSH keys, usernames, passwords, SSH
1140 service and SSH port numbers are Heat template parameters.
1147 The VNF or PNF **MUST** support ``:partial-lock`` and
1148 ``:partial-unlock`` capabilities, defined in RFC 5717. This
1149 allows multiple independent clients to each write to a different
1150 part of the <running> configuration at the same time.
1157 The VNF or PNF **MUST** support the ``:url`` value to specify
1158 protocol operation source and target parameters. The capability URI
1159 for this feature will indicate which schemes (e.g., file, https, sftp)
1160 that the server supports within a particular URL value. The 'file'
1161 scheme allows for editable local configuration databases. The other
1162 schemes allow for remote storage of configuration databases.
1169 The VNF or PNF **MUST** apply locking based on the sequence of
1170 NETCONF operations, with the first configuration operation locking
1171 out all others until completed.
1178 The VNF or PNF **MUST** support all operations, administration and
1179 management (OAM) functions available from the supplier for VNFs or PNFs
1180 using the supplied YANG code and associated NETCONF servers.
1187 The VNF or PNF **MUST** be able to specify the granularity of the
1188 lock via a restricted or full XPath expression.
1195 The VNF or PNF **SHOULD** conform its YANG model to RFC 7277,
1196 "A YANG Data Model for IP Management".
1203 The VNF or PNF **MUST** permit locking at the finest granularity
1204 if a VNF or PNF needs to lock an object for configuration to avoid blocking
1205 simultaneous configuration operations on unrelated objects (e.g., BGP
1206 configuration should not be locked out if an interface is being
1207 configured or entire Interface configuration should not be locked out
1208 if a non-overlapping parameter on the interface is being configured).
1215 The VNF or PNF **MUST** implement the ``:with-defaults`` capability
1223 The VNF or PNF **MUST** conform to the NETCONF RFC 4742,
1224 "Using the NETCONF Configuration Protocol over Secure Shell (SSH)".
1227 Configuration Management > NETCONF Standards and Capabilities > xNF Configuration via NETCONF Requirements > NETCONF Server Requirements
1228 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1231 Requirements Removed
1232 ~~~~~~~~~~~~~~~~~~~~
1239 The xNF **MUST** conform its YANG model to RFC 6060,
1240 "YANG - A Data Modeling Language for the Network Configuration
1241 Protocol (NETCONF)".
1244 Configuration Management > VNF or PNF REST APIs > REST APIs
1245 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1248 Requirements Changed
1249 ~~~~~~~~~~~~~~~~~~~~
1256 The VNF or PNF **MUST** support the HealthCheck RPC. The HealthCheck
1257 RPC executes a VNF or PNF Provider-defined VNF or PNF HealthCheck over the
1258 scope of the entire VNF or PNF (e.g., if there are multiple VNFCs, then
1259 run a health check, as appropriate, for all VNFCs). It returns a 200 OK if
1260 the test completes. A JSON object is returned indicating state (healthy,
1261 unhealthy), scope identifier, time-stamp and one or more blocks containing
1262 info and fault information. If the VNF or PNF is unable to run the
1263 HealthCheck, return a standard http error code and message.
1266 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > External Networks
1267 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1278 If a VNF's Heat Orchestration Template's resource
1279 ``OS::ContrailV2::VirtualMachineInterface``
1280 is attaching to an external network (per the
1281 ONAP definition, see Requirement R-57424), the
1284 ``virtual_machine_interface_allowed_address_pairs``,
1286 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1288 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1290 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1293 **MUST NOT** be enumerated in the
1294 VNF's Heat Orchestration Template's Environment File.
1301 When the VNF's Heat Orchestration Template's resource
1302 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
1304 ONAP definition, see Requirement R-57424),
1305 and an IPv4 Virtual IP (VIP)
1306 is required to be supported by the ONAP data model,
1309 ``virtual_machine_interface_allowed_address_pairs``,
1311 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1313 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1315 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1317 parameter name **MUST** follow the naming convention
1319 * ``{vm-type}_{network-role}_floating_ip``
1323 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1324 * ``{network-role}`` is the {network-role} of the external network
1326 And the parameter **MUST** be declared as type ``string``.
1328 The ONAP data model can only support one IPv4 VIP address.
1335 When the VNF's Heat Orchestration Template's resource
1336 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an external
1338 ONAP definition, see Requirement R-57424),
1339 and an IPv6 Virtual IP (VIP)
1340 is required to be supported by the ONAP data model,
1343 ``virtual_machine_interface_allowed_address_pairs``,
1345 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1347 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1349 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1351 parameter name **MUST** follow the naming convention
1353 * ``{vm-type}_{network-role}_floating_v6_ip``
1357 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1358 * ``{network-role}`` is the {network-role} of the external network
1360 And the parameter **MUST** be declared as type ``string``.
1362 The ONAP data model can only support one IPv6 VIP address.
1369 When the VNF's Heat Orchestration Template's resource
1370 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1372 (per the ONAP definition, see Requirement R-57424),
1373 and the IPv4 VIP address and/or IPv6 VIP address
1374 is **not** supported by the ONAP data model,
1377 ``virtual_machine_interface_allowed_address_pairs``,
1379 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1381 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1383 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1385 * Parameter name **MAY** use any naming convention. That is, there is no
1386 ONAP mandatory parameter naming convention.
1387 * Parameter **MAY** be declared as type ``string`` or type
1388 ``comma_delimited_list``.
1390 And the ``OS::ContrailV2::VirtualMachineInterface`` resource
1391 **MUST** contain resource-level ``metadata`` (not property-level).
1393 And the ``metadata`` format **MUST** must contain the
1394 key value ``aap_exempt`` with a list of all map property
1396 ``virtual_machine_interface_allowed_address_pairs``,
1398 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
1400 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``,
1402 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1404 parameters **not** supported by the ONAP data model.
1407 Contrail Resource Parameters > OS::ContrailV2::VirtualMachineInterface Property virtual_machine_interface_allowed_address_pairs > Internal Networks
1408 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1419 When the VNF's Heat Orchestration Template's Resource
1420 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1421 internal network (per the
1422 ONAP definition, see Requirements R-52425 and R-46461),
1423 and an IPv4 Virtual IP (VIP)
1424 address is assigned using the map property,
1425 ``virtual_machine_interface_allowed_address_pairs,
1426 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1427 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1428 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1429 , the parameter name **MUST** follow the
1432 * ``{vm-type}_int_{network-role}_floating_ip``
1436 * ``{vm-type}`` is the {vm-type} associated with the
1438 * ``{network-role}`` is the {network-role} of the external
1441 And the parameter **MUST** be declared as ``type: string``
1442 and **MUST** be enumerated in the environment file.
1446 the parameter name **MUST** follow the
1449 * ``{vm-type}_int_{network-role}_floating_ips``
1453 * ``{vm-type}`` is the {vm-type} associated with the
1455 * ``{network-role}`` is the {network-role} of the external
1458 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1459 and **MUST** be enumerated in the environment file.
1466 When the VNF's Heat Orchestration Template's Resource
1467 ``OS::ContrailV2::VirtualMachineInterface`` is attaching to an
1468 internal network (per the
1469 ONAP definition, see Requirements R-52425 and R-46461),
1470 and an IPv6 Virtual IP (VIP)
1472 using the map property,
1473 ``virtual_machine_interface_allowed_address_pairs,
1474 virtual_machine_interface_allowed_address_pairs_allowed_address_pair,
1475 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip,
1476 virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
1477 , the parameter name **MUST** follow the
1480 * ``{vm-type}_int_{network-role}_floating_v6_ip``
1484 * ``{vm-type}`` is the {vm-type} associated with the
1486 * ``{network-role}`` is the {network-role} of the external
1489 And the parameter **MUST** be declared as ``type: string``
1490 and **MUST** be enumerated in the environment file
1494 the parameter name **MUST** follow the
1497 * ``{vm-type}_int_{network-role}_floating_v6_ips``
1501 * ``{vm-type}`` is the {vm-type} associated with the
1503 * ``{network-role}`` is the {network-role} of the external
1506 And the parameter **MUST** be declared as ``type: comma_delimited_list``
1507 and **MUST** be enumerated in the environment file.
1510 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property instance_ip_address
1511 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1522 The VNF's Heat Orchestration Template's
1523 resource ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1525 **MUST** be declared as either type ``string`` or type
1526 ``comma_delimited_list``.
1533 When the VNF's Heat Orchestration Template's Resource
1534 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1535 to an external network (per the ONAP definition, see Requirement R-57424),
1536 and an IPv4 address is assigned
1537 using the property ``instance_ip_address``
1538 and the parameter type is defined as a string,
1539 the parameter name **MUST** follow the
1542 * ``{vm-type}_{network-role}_ip_{index}``
1546 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1547 * ``{network-role}`` is the {network-role} of the external network
1548 * ``{index}`` is a numeric value that **MUST** start at zero in a
1549 VNF's Heat Orchestration Template and **MUST** increment by one
1556 The VNF's Heat Orchestration Template's Resource
1557 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1559 ``{vm-type}_{network-role}_ip_{index}``
1560 **MUST NOT** be enumerated in the
1561 VNF's Heat Orchestration Template's Environment File.
1568 When the VNF's Heat Orchestration Template's Resource
1569 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1570 to an external network (per the
1571 ONAP definition, see Requirement R-57424),
1572 and an IPv4 address is assigned
1573 using the property ``instance_ip_address``
1574 and the parameter type is defined as a
1575 ``comma_delimited_list``,
1576 the parameter name **MUST** follow the
1579 * ``{vm-type}_{network-role}_ips``
1583 * ``{vm-type}`` is the {vm-type} associated with the
1584 ``OS::Nova::Server``
1585 * ``{network-role}`` is the {network-role} of the external
1593 The VNF's Heat Orchestration Template's Resource
1594 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1596 ``{vm-type}_{network-role}_ips``
1597 **MUST NOT** be enumerated in the
1598 VNF's Heat Orchestration Template's Environment File.
1605 When the VNF's Heat Orchestration Template's Resource
1606 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1607 to an external network
1609 ONAP definition, see Requirement R-57424),
1610 and an IPv6 address is assigned
1611 using the property ``instance_ip_address``
1612 and the parameter type is defined as a string,
1613 the parameter name **MUST** follow the
1616 * ``{vm-type}_{network-role}_v6_ip_{index}``
1620 * ``{vm-type}`` is the {vm-type} associated with the
1621 ``OS::Nova::Server``
1622 * ``{network-role}`` is the {network-role} of the external network
1623 * ``{index}`` is a numeric value that **MUST** start at zero in a
1624 VNF's Heat Orchestration Template and **MUST** increment by one
1631 The VNF's Heat Orchestration Template's Resource
1632 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1634 ``{vm-type}_{network-role}_v6_ip_{index}``
1635 **MUST NOT** be enumerated in the
1636 VNF's Heat Orchestration Template's Environment File.
1643 When the VNF's Heat Orchestration Template's Resource
1644 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1645 to an external network (per the
1646 ONAP definition, see Requirement R-57424),
1647 and an IPv6 address is assigned
1648 using the property ``instance_ip_address``
1649 and the parameter type is defined as a
1650 ``comma_delimited_list``,
1651 the parameter name **MUST** follow the
1654 * ``{vm-type}_{network-role}_v6_ips``
1658 * ``{vm-type}`` is the {vm-type} associated with the
1660 * ``{network-role}`` is the {network-role} of the external
1668 The VNF's Heat Orchestration Template's Resource
1669 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1671 ``{vm-type}_{network-role}_v6_ips``
1672 **MUST NOT** be enumerated in the
1673 VNF's Heat Orchestration Template's Environment File.
1680 When the VNF's Heat Orchestration Template's Resource
1681 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1682 to an internal network (per the
1683 ONAP definition, see Requirements R-52425 and R-46461),
1684 and an IPv4 address is assigned
1685 using the property ``instance_ip_address``
1686 and the parameter type is
1687 defined as a ``string``,
1688 the parameter name **MUST** follow the
1691 * ``{vm-type}_int_{network-role}_ip_{index}``
1695 * ``{vm-type}`` is the {vm-type} associated with the
1696 ``OS::Nova::Server``
1697 * ``{network-role}`` is the {network-role} of the internal network
1698 * ``{index}`` is a numeric value that **MUST** start at zero in a
1699 VNF's Heat Orchestration Template and **MUST** increment by one
1706 The VNF's Heat Orchestration Template's Resource
1707 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1709 ``{vm-type}_int_{network-role}_ip_{index}``
1710 **MUST** be enumerated in the
1711 VNF's Heat Orchestration Template's Environment File.
1718 When the VNF's Heat Orchestration Template's Resource
1719 ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1720 to an internal network (per the
1721 ONAP definition, see Requirements R-52425 and R-46461),
1722 and an IPv4 address is assigned
1723 using the property ``instance_ip_address``
1724 and the parameter type is defined as a
1725 ``comma_delimited_list``,
1726 the parameter name **MUST** follow the
1729 * ``{vm-type}_int_{network-role}_ips``
1733 * ``{vm-type}`` is the {vm-type} associated with the
1734 ``OS::Nova::Server``
1735 * ``{network-role}`` is the {network-role} of the internal
1743 The VNF's Heat Orchestration Template's Resource
1744 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1746 ``{vm-type}_int_{network-role}_int_ips``
1747 **MUST** be enumerated in the
1748 VNF's Heat Orchestration Template's Environment File.
1755 When the VNF's Heat Orchestration Template's Resource
1756 ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
1757 internal network (per the
1758 ONAP definition, see Requirements R-52425 and R-46461),
1759 and an IPv6 address is assigned
1760 using the property ``instance_ip_address``
1761 and the parameter type is defined as a
1763 the parameter name **MUST** follow the
1766 * ``{vm-type}_int_{network-role}_v6_ip_{index}``
1770 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
1771 * ``{network-role}`` is the {network-role} of the internal network
1772 * ``{index}`` is a numeric value that **MUST** start at zero in a
1773 VNF's Heat Orchestration Template and **MUST** increment by one
1780 The VNF's Heat Orchestration Template's Resource
1781 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1783 ``{vm-type}_int_{network-role}_v6_ip_{index}``
1784 **MUST** be enumerated in the
1785 VNF's Heat Orchestration Template's Environment File.
1792 When the VNF's Heat Orchestration Template's Resource
1793 ``OS::ContrailV2::InstanceIp`` is assigning an IP address to an
1794 internal network (per the
1795 ONAP definition, see Requirements R-52425 and R-46461),
1796 and an IPv6 address is assigned
1797 using the property ``instance_ip_address``
1798 and the parameter type is defined as a
1799 ``comma_delimited_list``,
1800 the parameter name **MUST** follow the
1803 * ``{vm-type}_int_{network-role}_v6_ips``
1807 * ``{vm-type}`` is the {vm-type} associated with the
1808 ``OS::Nova::Server``
1809 * ``{network-role}`` is the {network-role} of the internal
1817 The VNF's Heat Orchestration Template's Resource
1818 ``OS::ContrailV2::InstanceIp`` property ``instance_ip_address``
1819 map property ``ip_address`` parameter
1820 ``{vm-type}_int_{network-role}_v6_ips``
1821 **MUST** be enumerated in the
1822 VNF's Heat Orchestration Template's Environment File.
1829 The VNF's Heat Orchestration Template's Resource
1830 ``OS::ContrailV2::InstanceIp``
1831 property ``instance_ip_address``
1832 parameter associated with an external network, i.e.,
1834 * ``{vm-type}_{network-role}_ip_{index}``
1835 * ``{vm-type}_{network-role}_v6_ip_{index}``
1836 * ``{vm-type}_{network-role}_ips``
1837 * ``{vm-type}_{network-role}_v6_ips``
1840 **MUST NOT** be enumerated in the Heat Orchestration
1841 Template's Environment File. ONAP provides the IP address
1842 assignments at orchestration time.
1849 The VNF's Heat Orchestration Template's Resource
1850 ``OS::ContrailV2::InstanceIp``
1851 property ``instance_ip_address``
1852 parameter associated with an internal network, i.e.,
1854 * ``{vm-type}_int_{network-role}_ip_{index}``
1855 * ``{vm-type}_int_{network-role}_v6_ip_{index}``
1856 * ``{vm-type}_int_{network-role}_ips``
1857 * ``{vm-type}_int_{network-role}_v6_ips``
1860 **MUST** be enumerated in the Heat Orchestration
1861 Template's Environment File and IP addresses **MUST** be
1865 Contrail Resource Parameters > Resource OS::ContrailV2::InstanceIp > Resource OS::ContrailV2::InstanceIp Property subnet_uuid
1866 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1877 The VNF's Heat Orchestration Template's
1878 resource ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1880 **MUST** be declared type ``string``.
1887 When the VNF's Heat Orchestration Template's
1888 resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1889 to an external network (per the ONAP definition, see
1890 Requirement R-57424),
1891 and an IPv4 address is being cloud assigned by OpenStack's DHCP Service
1892 and the external network IPv4 subnet is to be specified
1893 using the property ``subnet_uuid``, the parameter
1894 **MUST** follow the naming convention
1896 * ``{network-role}_subnet_id``
1900 * ``{network-role}`` is the network role of the network.
1907 The VNF's Heat Orchestration Template's Resource
1908 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1910 ``{network-role}_subnet_id``
1911 **MUST NOT** be enumerated in the
1912 VNF's Heat Orchestration Template's Environment File.
1919 When the VNF's Heat Orchestration Template's
1920 resource ``OS::ContrailV2::InstanceIp`` is assigning an IP address
1921 to an external network (per the ONAP definition, see
1922 Requirement R-57424),
1923 and an IPv6 address is being cloud assigned by OpenStack's DHCP Service
1924 and the external network IPv6 subnet is to be specified
1925 using the property ``subnet_uuid``, the parameter
1926 **MUST** follow the naming convention
1928 * ``{network-role}_v6_subnet_id``
1932 * ``{network-role}`` is the network role of the network.
1939 The VNF's Heat Orchestration Template's Resource
1940 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1942 ``{network-role}_v6_subnet_id``
1943 **MUST NOT** be enumerated in the
1944 VNF's Heat Orchestration Template's Environment File.
1953 * the VNF's Heat Orchestration Template's
1954 resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
1955 assigning an IP address
1956 to an internal network (per the ONAP definition, see
1957 Requirements R-52425 and R-46461)
1958 that is created in the Base Module, AND
1959 * an IPv4 address is being cloud assigned by OpenStack's DHCP Service AND
1960 * the internal network IPv4 subnet is to be specified
1961 using the property ``subnet_uuid``,
1963 the parameter **MUST** follow the naming convention
1965 * ``int_{network-role}_subnet_id``
1969 * ``{network-role}`` is the network role of the internal network
1971 Note that the parameter **MUST** be defined as an ``output`` parameter in
1979 The VNF's Heat Orchestration Template's Resource
1980 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
1982 ``int_{network-role}_subnet_id``
1983 **MUST NOT** be enumerated in the
1984 VNF's Heat Orchestration Template's Environment File.
1993 * the VNF's Heat Orchestration Template's
1994 resource ``OS::ContrailV2::InstanceIp`` in an Incremental Module is
1996 to an internal network (per the ONAP definition,
1997 see Requirements R-52425 and R-46461)
1998 that is created in the Base Module, AND
1999 * an IPv6 address is being cloud assigned by OpenStack's DHCP Service AND
2000 * the internal network IPv6 subnet is to be specified
2001 using the property ``subnet_uuid``,
2003 the parameter **MUST** follow the naming convention
2004 ``int_{network-role}_v6_subnet_id``,
2005 where ``{network-role}`` is the network role of the internal network.
2007 Note that the parameter **MUST** be defined as an ``output`` parameter in
2015 The VNF's Heat Orchestration Template's Resource
2016 ``OS::ContrailV2::InstanceIp`` property ``subnet_uuid``
2018 ``int_{network-role}_v6_subnet_id``
2019 **MUST NOT** be enumerated in the
2020 VNF's Heat Orchestration Template's Environment File.
2023 Monitoring & Management > Data Structure Specification of the Event Record
2024 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2027 Requirements Changed
2028 ~~~~~~~~~~~~~~~~~~~~
2035 The VNF or PNF provider **MUST** indicate specific conditions that may arise, and
2036 recommend actions that may be taken at specific thresholds, or if specific
2037 conditions repeat within a specified time interval, using the semantics and
2038 syntax described by the :ref:`VES Event Registration specification <ves_event_registration_3_2>`.
2045 The events produced by the VNF or PNF **MUST** must be compliant with the common
2046 event format defined in the
2047 :ref:`VES Event Listener<ves_event_listener_7_1>`
2055 The VNF or PNF provider **MUST** provide a YAML file formatted in adherence with
2056 the :ref:`VES Event Registration specification <ves_event_registration_3_2>`
2057 that defines the following information for each event produced by the VNF:
2062 * Any special handling to be performed for that event
2069 The VNF or PNF Provider **MAY** require that specific events, identified by their
2070 ``eventName``, require that certain fields, which are optional in the common
2071 event format, must be present when they are published.
2074 Monitoring & Management > Event Records - Data Structure Description > Common Event Header
2075 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2078 Requirements Changed
2079 ~~~~~~~~~~~~~~~~~~~~
2086 The VNF **MUST** produce VES events that include the following mandatory
2087 fields in the common event header.
2089 * ``domain`` - the event domain enumeration
2090 * ``eventId`` - the event key unique to the event source
2091 * ``eventName`` - the unique event name
2092 * ``lastEpochMicrosec`` - the latest unix time (aka epoch time) associated
2094 * ``priority`` - the processing priority enumeration
2095 * ``reportingEntityName`` - name of the entity reporting the event or
2096 detecting a problem in another VNF or PNF
2097 * ``sequence`` - the ordering of events communicated by an event source
2098 * ``sourceName`` - name of the entity experiencing the event issue, which
2099 may be detected and reported by a separate reporting entity
2100 * ``startEpochMicrosec`` - the earliest unix time (aka epoch time)
2101 associated with the event
2102 * ``version`` - the version of the event header
2103 * ``vesEventListenerVersion`` - Version of the VES event listener API spec
2104 that this event is compliant with
2107 Monitoring & Management > Monitoring & Management Requirements > Addressing and Delivery Protocol
2108 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2111 Requirements Changed
2112 ~~~~~~~~~~~~~~~~~~~~
2119 The VNF or PNF **MUST** have the capability of maintaining a primary
2120 and backup DNS name (URL) for connecting to ONAP collectors, with the
2121 ability to switch between addresses based on conditions defined by policy
2122 such as time-outs, and buffering to store messages until they can be
2123 delivered. At its discretion, the service provider may choose to populate
2124 only one collector address for a VNF or PNF. In this case, the network will
2125 promptly resolve connectivity problems caused by a collector or network
2126 failure transparently to the VNF or PNF.
2133 The VNF or PNF **SHOULD** use REST using HTTPS delivery of plain
2134 text JSON for moderate sized asynchronous data sets, and for high
2135 volume data sets when feasible.
2142 The VNF or PNF **MUST** be configured with initial address(es) to use
2143 at deployment time. Subsequently, address(es) may be changed through
2144 ONAP-defined policies delivered from ONAP to the VNF or PNF using PUTs to a
2145 RESTful API, in the same manner that other controls over data reporting
2146 will be controlled by policy.
2153 The VNF or PNF **MAY** use another option which is expected to include TCP
2154 for high volume streaming asynchronous data sets and for other high volume
2155 data sets. TCP delivery can be used for either JSON or binary encoded data
2163 The VNF or PNF **MAY** use another option which is expected to include SFTP
2164 for asynchronous bulk files, such as bulk files that contain large volumes
2165 of data collected over a long time interval or data collected across many
2166 VNFs or PNFs. (Preferred is to reorganize the data into more frequent or more focused
2167 data sets, and deliver these by REST or TCP as appropriate.)
2174 The VNF or PNF **MUST**, by ONAP Policy, provide the ONAP addresses
2175 as data destinations for each VNF or PNF, and may be changed by Policy while
2176 the VNF or PNF is in operation. We expect the VNF or PNF to be capable of redirecting
2177 traffic to changed destinations with no loss of data, for example from
2178 one REST URL to another, or from one TCP host and port to another.
2185 The VNF or PNF **MAY** use another option which is expected to include REST
2186 delivery of binary encoded data sets.
2193 The VNF or PNF **MAY** use another option which is expected to include REST
2194 for synchronous data, using RESTCONF (e.g., for VNF or PNF state polling).
2197 Monitoring & Management > Monitoring & Management Requirements > Asynchronous and Synchronous Data Delivery
2198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2201 Requirements Changed
2202 ~~~~~~~~~~~~~~~~~~~~
2209 The VNF or PNF **MUST** must encode, address and deliver the data
2210 as described in the previous paragraphs.
2217 The VNF or PNF **MUST** deliver asynchronous data as data becomes
2218 available, or according to the configured frequency.
2225 The VNF or PNF **MUST** use the YANG configuration models and RESTCONF
2226 [RFC8040] (https://tools.ietf.org/html/rfc8040).
2233 The VNF or PNF **MUST** respond to an ONAP request to deliver the
2234 current data for any of the record types defined in
2235 `Event Records - Data Structure Description`_ by returning the requested
2236 record, populated with the current field values. (Currently the defined
2237 record types include fault fields, mobile flow fields, measurements for
2238 VNF or PNF scaling fields, and syslog fields. Other record types will be added
2239 in the future as they become standardized and are made available.)
2246 The VNF or PNF **MUST** use the RESTCONF/NETCONF framework used by
2247 the ONAP configuration subsystem for synchronous communication.
2254 The VNF or PNF **SHOULD** deliver all syslog messages to the VES Collector per the
2255 specifications in Monitoring and Management chapter.
2262 The VNF or PNF **MUST** respond to an ONAP request to deliver granular
2263 data on device or subsystem status or performance, referencing the YANG
2264 configuration model for the VNF or PNF by returning the requested data elements.
2271 The VNF or PNF **MUST** respond to data requests from ONAP as soon
2272 as those requests are received, as a synchronous response.
2279 The VNF or PNF **MUST** respond with content encoded in JSON, as
2280 described in the RESTCONF specification. This way the encoding of a
2281 synchronous communication will be consistent with Avro.
2288 The VNF or PNF **SHOULD** use `Modeling JSON text with YANG
2289 <https://tools.ietf.org/html/rfc7951>`_, If YANG models need to be
2290 translated to and from JSON{RFC7951]. YANG configuration and content can
2291 be represented via JSON, consistent with Avro, as described in "Encoding
2292 and Serialization" section.
2295 Monitoring & Management > Monitoring & Management Requirements > Bulk Performance Measurement
2296 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2307 The VNF or PNF **SHOULD** report the files in FileReady for as long as they are
2308 available at VNF or PNF.
2310 Note: Recommended period is at least 24 hours.
2313 Requirements Changed
2314 ~~~~~~~~~~~~~~~~~~~~
2321 The VNF or PNF **SHOULD** support FileReady VES event for event-driven bulk transfer
2329 The VNF or PNF **SHOULD** support File transferring protocol, such as FTPES or SFTP,
2330 when supporting the event-driven bulk transfer of monitoring data.
2337 The VNF or PNF **SHOULD** support the data schema defined in 3GPP TS 32.435, when
2338 supporting the event-driven bulk transfer of monitoring data.
2341 Monitoring & Management > Monitoring & Management Requirements > Google Protocol Buffers (GPB)
2342 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2345 Requirements Changed
2346 ~~~~~~~~~~~~~~~~~~~~
2353 The VNF or PNF, when leveraging Google Protocol Buffers for events, **MUST**
2354 serialize the events using native Google Protocol Buffers (GPB) according
2355 to the following guidelines:
2357 * The keys are represented as integers pointing to the system resources
2358 for the VNF or PNF being monitored
2359 * The values correspond to integers or strings that identify the
2360 operational state of the VNF resource, such a statistics counters and
2361 the state of an VNF or PNF resource.
2362 * The required Google Protocol Buffers (GPB) metadata is provided in the
2363 form of .proto files.
2370 The VNF or PNF providers **MUST** provide the Service Provider the following
2371 artifacts to support the delivery of high-volume VNF or PNF telemetry to
2372 DCAE via GPB over TLS/TCP:
2374 * A valid VES Event .proto definition file, to be used validate and
2376 * A valid high volume measurement .proto definition file, to be used for
2377 processing high volume events
2378 * A supporting PM content metadata file to be used by analytics
2379 applications to process high volume measurement events
2382 Monitoring & Management > Monitoring & Management Requirements > JSON
2383 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2386 Requirements Changed
2387 ~~~~~~~~~~~~~~~~~~~~
2394 The VNF or PNF, when leveraging JSON for events, **MUST** encode and serialize
2395 content delivered to ONAP using JSON (RFC 7159) plain text format.
2396 High-volume data is to be encoded and serialized using
2397 `Avro <http://avro.apache.org/>`_, where the Avro data
2398 format are described using JSON.
2401 Monitoring & Management > Monitoring & Management Requirements > Reporting Frequency
2402 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2405 Requirements Changed
2406 ~~~~~~~~~~~~~~~~~~~~
2413 The VNF or PNF **MUST** vary the frequency that asynchronous data
2414 is delivered based on the content and how data may be aggregated or
2419 - For example, alarms and alerts are expected to be delivered as
2420 soon as they appear. In contrast, other content, such as performance
2421 measurements, KPIs or reported network signaling may have various
2422 ways of packaging and delivering content. Some content should be
2423 streamed immediately; or content may be monitored over a time
2424 interval, then packaged as collection of records and delivered
2425 as block; or data may be collected until a package of a certain
2426 size has been collected; or content may be summarized statistically
2427 over a time interval, or computed as a KPI, with the summary or KPI
2429 - We expect the reporting frequency to be configurable depending on
2430 the virtual network functions needs for management. For example,
2431 Service Provider may choose to vary the frequency of collection
2432 between normal and trouble-shooting scenarios.
2433 - Decisions about the frequency of data reporting will affect
2434 the size of delivered data sets, recommended delivery method,
2435 and how the data will be interpreted by ONAP. These considerations
2436 should not affect deserialization and decoding of the data, which
2437 will be guided by the accompanying JSON schema or GPB definition
2445 The VNF or PNF **MUST** report exactly one Measurement event per period
2449 Monitoring & Management > Monitoring & Management Requirements > Security
2450 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2453 Requirements Changed
2454 ~~~~~~~~~~~~~~~~~~~~
2461 The VNF or PNF **MUST** support secure connections and transports such as
2462 Transport Layer Security (TLS) protocol
2463 [`RFC5246 <https://tools.ietf.org/html/rfc5246>`_] and should adhere to
2464 the best current practices outlined in
2465 `RFC7525 <https://tools.ietf.org/html/rfc7525>`_.
2472 The VNF or PNF **MUST** control access to ONAP and to VNFs or PNFs, and creation
2473 of connections, through secure credentials, log-on and exchange mechanisms.
2480 When the VNF or PNF sets up a HTTP or HTTPS connection to the collector, it **MUST**
2481 provide a username and password to the DCAE VES Collector for HTTP Basic
2484 Note: HTTP Basic Authentication has 4 steps: Request, Authenticate,
2485 Authorization with Username/Password Credentials, and Authentication Status
2486 as per RFC7617 and RFC 2617.
2493 The VNF or PNF **MUST** support the provisioning of security and authentication
2494 parameters (HTTP username and password) in order to be able to authenticate
2495 with DCAE (in ONAP).
2497 Note: In R3, a username and password are used with the DCAE VES Event
2498 Listener which are used for HTTP Basic Authentication.
2500 Note: The configuration management and provisioning software are specific
2501 to a vendor architecture.
2508 The VNF or PNF **MUST** encrypt any content containing Sensitive Personal
2509 Information (SPI) or certain proprietary data, in addition to applying the
2510 regular procedures for securing access and delivery.
2517 The VNF or PNF **MUST** carry data in motion only over secure connections.
2520 Monitoring & Management > Monitoring & Management Requirements > VNF telemetry via standardized interface
2521 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2524 Requirements Changed
2525 ~~~~~~~~~~~~~~~~~~~~
2532 The VNF or PNF MUST produce heartbeat indicators consisting of events containing
2533 the common event header only per the VES Listener Specification.
2536 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces
2537 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2540 Requirements Changed
2541 ~~~~~~~~~~~~~~~~~~~~
2548 The VNF or PNF **MUST** deliver event records to ONAP using the common
2549 transport mechanisms and protocols defined in this specification.
2556 The VNF or PNF **SHOULD** deliver event records that fall into the event domains
2564 The VNF or PNF provider **MUST** reach agreement with the Service Provider on
2565 the selected methods for encoding, serialization and data delivery
2566 prior to the on-boarding of the VNF or PNF into ONAP SDC Design Studio.
2569 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > Bulk Telemetry Transmission
2573 Requirements Changed
2574 ~~~~~~~~~~~~~~~~~~~~
2581 The VNF or PNF **MAY** leverage bulk VNF or PNF telemetry transmission mechanism, as
2582 depicted in Figure 4, in instances where other transmission methods are not
2583 practical or advisable.
2586 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > VNF or PNF Telemetry using Google Protocol Buffers
2590 Requirements Changed
2591 ~~~~~~~~~~~~~~~~~~~~
2598 The VNF or PNF **MAY** leverage the Google Protocol Buffers (GPB) delivery model
2599 depicted in Figure 3 to support real-time performance management (PM) data.
2600 In this model the VES events are streamed as binary-encoded GBPs over via
2604 Monitoring & Management > Transports and Protocols Supporting Resource Interfaces > VNF or PNF Telemetry using VES/JSON Model
2608 Requirements Changed
2609 ~~~~~~~~~~~~~~~~~~~~
2616 The VNF or PNF **SHOULD** leverage the JSON-driven model, as depicted in Figure 2,
2617 for data delivery unless there are specific performance or operational
2618 concerns agreed upon by the Service Provider that would warrant using an
2622 ONAP Heat Heat Template Constructs > Heat Files Support (get_file)
2626 Requirements Removed
2627 ~~~~~~~~~~~~~~~~~~~~
2634 When using the intrinsic function get_file, ONAP does not support
2635 a directory hierarchy for included files. All files must be in a
2636 single, flat directory per VNF. A VNF's Heat Orchestration
2637 Template's ``get_file`` target files **MUST** be in the same
2638 directory hierarchy as the VNF's Heat Orchestration Templates.
2641 ONAP Heat Heat Template Constructs > Key Pairs
2653 If a VNF requires the use of an SSH key created by OpenStack, the VNF
2654 Heat Orchestration Template **SHOULD** create the ``OS::Nova::Keypair``
2655 in the base module, and expose the public key as an output value.
2657 This allows re-use of the key by ONAP when triggering scale out, recovery,
2658 or other day 1 operations.
2661 ONAP Heat Heat Template Constructs > Nested Heat Templates > Nested Heat Template Requirements
2673 If a VNF's Heat Orchestration Template's resource invokes a nested
2674 YAML file, either statically or dynamically
2675 (via ``OS::Heat::ResourceGroup``),
2676 the names of the parameters associated with the following resource
2677 properties **MUST NOT** change.
2679 * ``OS::Nova::Server`` property ``flavor``
2680 * ``OS::Nova::Server`` property ``image``
2681 * ``OS::Nova::Server`` property ``name``
2682 * ``OS::Nova::Server`` property metadata key value ``vnf_id``
2683 * ``OS::Nova::Server`` property metadata key value ``vf_module_id``
2684 * ``OS::Nova::Server`` property metadata key value ``vnf_name``
2685 * ``OS::Nova::Server`` property metadata key value ``vf_module_name``
2686 * ``OS::Nova::Server`` property metadata key value ``vm_role``
2687 * ``OS::Nova::Server`` property metadata key value ``vf_module_index``
2688 * ``OS::Nova::Server`` property metadata key value ``workload_context``
2689 * ``OS::Nova::Server`` property metadata key value ``environment_context``
2690 * ``OS::Neutron::Port`` property ``fixed_ips``, map property ``ip_address``
2691 * ``OS::Neutron::Port`` property ``fixed_ips``, map property ``subnet``
2692 * ``OS::Neutron::Port`` property ``allowed_address_pairs``, map property
2694 * ``OS::Neutron::Port`` property ``network``
2695 * ``OS::ContrailV2::VirtualMachineInterface`` property
2696 ``virtual_network_refs``
2697 * ``OS::ContrailV2::VirtualMachineInterface`` property
2698 ``virtual_machine_interface_allowed_address_pairs``, map property
2699 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair``,
2700 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip``
2702 ``virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix``
2703 * ``OS::ContrailV2::InstanceIP`` property ``instance_ip_address``
2704 * ``OS::ContrailV2::InstanceIP`` property ``subnet_uuid``
2707 Requirements Removed
2708 ~~~~~~~~~~~~~~~~~~~~
2715 A VNF's Heat Orchestration Template's Nested YAML file
2716 **MUST** be in the same directory hierarchy as the VNF's Heat
2717 Orchestration Templates.
2724 A VNF's Heat Orchestration Template **MUST** reference a Nested YAML
2725 file by name. The use of ``resource_registry`` in the VNF's Heat
2726 Orchestration Templates Environment File **MUST NOT** be used.
2729 ONAP Heat Networking > External Networks
2733 Requirements Removed
2734 ~~~~~~~~~~~~~~~~~~~~
2741 A VNF's ``{network-role}`` assigned to an external network **MUST**
2742 be different than the ``{network-role}`` assigned to the VNF's
2743 internal networks, if internal networks exist.
2746 ONAP Heat Networking > Internal Networks
2750 Requirements Changed
2751 ~~~~~~~~~~~~~~~~~~~~
2758 If a VNF has an internal network, the VNF Heat Orchestration Template
2759 **MUST** include the heat resources to create the internal network.
2761 A VNF's Internal Network is created using Neutron Heat Resources
2762 (i.e., ``OS::Neutron::Net``, ``OS::Neutron::Subnet``) and/or
2763 Contrail Heat Resources (i.e., ``OS::ContrailV2::VirtualNetwork``,
2764 ``ContrailV2::NetworkIpam``).
2771 When a VNF's Heat Orchestration Template creates an internal network
2772 (per the ONAP definition, see Requirements R-52425 and R-46461
2773 and R-35666) and the internal network needs to be shared between modules
2774 within a VNF, the internal network **MUST** be created either in the
2777 * a nested YAML file invoked by the base module
2779 and the base module **MUST** contain an output parameter that provides
2780 either the network UUID or network name.
2782 * If the network UUID value is used to reference the network, the output
2783 parameter name in the base module **MUST** follow the naming convention
2784 ``int_{network-role}_net_id``
2785 * If the network name in is used to reference the network, the output
2786 parameter name in the base template **MUST** follow the naming convention
2787 ``int_{network-role}_net_name``
2789 ``{network-role}`` **MUST** be the network-role of the internal network
2790 created in the Base Module.
2792 The Base Module Output Parameter MUST be declared in the ``parameters:``
2793 section of the Incremental Module(s) where the ``OS::Neutron::Port``
2794 resource(s) is attaching to the internal network.
2797 Requirements Removed
2798 ~~~~~~~~~~~~~~~~~~~~
2805 When a VNF creates two or more internal networks, each internal
2806 network **MUST** be assigned a unique ``{network-role}`` in the context
2807 of the VNF for use in the VNF's Heat Orchestration Template.
2814 When a VNF creates an internal network, a network role, referred to as
2815 the ``{network-role}`` **MUST** be assigned to the internal network
2816 for use in the VNF's Heat Orchestration Template.
2823 A VNF's ``{network-role}`` assigned to an internal network **MUST**
2824 be different than the ``{network-role}`` assigned to the VNF's external
2828 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > parameters > constraints
2832 Requirements Changed
2833 ~~~~~~~~~~~~~~~~~~~~
2840 A VNF's Heat Orchestration Template's parameter defined
2841 in a nested YAML file
2842 **SHOULD NOT** have a parameter constraint defined.
2849 A VNF's Heat Orchestration Template's parameter defined
2850 in a non-nested YAML file as type
2851 ``number`` **MAY** have a parameter constraint defined.
2854 ONAP Heat Orchestration Template Format > Heat Orchestration Template Structure > resources > properties
2858 Requirements Changed
2859 ~~~~~~~~~~~~~~~~~~~~
2866 A VNF's Heat Orchestration Template resource attribute ``property:``
2867 **MUST NOT** use more than two levels of nested ``get_param`` intrinsic
2868 functions when deriving a property value. SDC does not support nested
2869 ``get_param`` with recursive lists (i.e., a list inside list).
2870 The second ``get_param`` in a nested lookup must directly derive its value
2871 without further calls to ``get_param`` functions.
2873 * Example of valid nesting:
2875 * ``name: {get_param: [ {vm-type}_names, {get_param : index } ] }``
2877 * Examples of invalid nesting. SDC will not support these examples since
2878 there is an array inside array.
2880 * ``name: {get_param: [ {vm-type}_names, { get_param: [ indexlist, 0 ] } ] }``
2881 * ``name: {get_param: [ {vm-type}_names, { get_param: [ indexlist1, { get_param: indexlist2 } ] } ] }``
2884 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Base Modules
2888 Requirements Changed
2889 ~~~~~~~~~~~~~~~~~~~~
2896 A VNF Heat Orchestration Template's Base Module file name **MUST** include
2897 case insensitive 'base' in the filename and
2898 **MUST** match one of the following four
2901 1.) ``base_<text>.y[a]ml``
2903 2.) ``<text>_base.y[a]ml``
2907 4.) ``<text>_base_<text>``.y[a]ml
2909 where ``<text>`` **MUST** contain only alphanumeric characters and
2910 underscores '_' and **MUST NOT** contain the case insensitive string
2911 ``base`` or ``volume``.
2914 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Cinder Volume Modules
2926 A VNF Heat Orchestration Template's Cinder Volume Module ``resources:``
2928 **MUST** only be defined using one of the following:
2930 * one of more ``OS::Cinder::Volume`` resources
2931 * one or more ``OS::Heat::ResourceGroup`` resources that call a nested YAML
2932 file that contains only ``OS::Cinder::Volume`` resources
2933 * a resource that calls a nested YAML file (static nesting) that contains
2934 only ``OS::Cinder::Volume`` resources
2937 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Incremental Modules
2941 Requirements Changed
2942 ~~~~~~~~~~~~~~~~~~~~
2949 VNF Heat Orchestration Template's Incremental Module file name
2950 **MUST** contain only alphanumeric characters and underscores
2951 '_' and **MUST NOT** contain the case insensitive string ``base``.
2954 ONAP Heat Orchestration Templates Overview > ONAP Heat Orchestration Template Filenames > Nested Heat file
2958 Requirements Changed
2959 ~~~~~~~~~~~~~~~~~~~~
2966 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
2967 only alphanumeric characters and underscores '_' and
2968 **MUST NOT** contain the case insensitive string ``base``.
2971 ONAP Heat Orchestration Templates Overview > ONAP VNF Modularity Overview
2975 Requirements Changed
2976 ~~~~~~~~~~~~~~~~~~~~
2983 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
2984 **MAY** be defined in an Incremental Module.
2991 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
2992 **MAY** be defined in a Cinder Volume Module.
2999 A VNF's Heat Orchestration Template's Resource ``OS::Cinder::Volume``
3000 **MAY** be defined in a Base Module.
3003 Requirements Removed
3004 ~~~~~~~~~~~~~~~~~~~~
3011 At orchestration time, the VNF's Base Module **MUST**
3012 be deployed first, prior to any incremental modules.
3015 ONAP Heat Orchestration Templates Overview > ONAP VNF On-Boarding
3027 The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include
3028 a binary image file.
3035 When a VNF's Heat Orchestration Template is ready
3036 to be on-boarded to ONAP,
3037 all files composing the VNF Heat Orchestration Template
3038 **MUST** be placed in a flat (i.e., non-hierarchical) directory and
3039 archived using ZIP. The resulting ZIP file is uploaded into ONAP.
3042 ONAP Heat Orchestration Templates Overview > Output Parameters > ONAP Base Module Output Parameters
3046 Requirements Changed
3047 ~~~~~~~~~~~~~~~~~~~~
3054 VNF's Heat Orchestration Template's Base Module's output parameter's
3055 name and type **MUST** match the VNF's Heat Orchestration Template's
3056 incremental Module's name and type.
3063 When a VNF's Heat Orchestration Template's Base Module's output
3064 parameter is declared as an input parameter in an Incremental Module,
3065 the parameter attribute ``constraints:`` **SHOULD NOT** be declared.
3068 ONAP Heat Orchestration Templates Overview > Output Parameters > ONAP Volume Module Output Parameters
3072 Requirements Changed
3073 ~~~~~~~~~~~~~~~~~~~~
3080 When an ONAP Volume Module Output Parameter is declared as an input
3081 parameter in a base or an incremental module Heat Orchestration
3082 Template, parameter constraints **SHOULD NOT** be declared.
3089 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
3090 Parameter's name and type **MUST** match the input parameter name and type
3091 in the corresponding Base Module or Incremental Module.
3098 A VNF's Heat Orchestration Template's Cinder Volume Module Output
3100 **MUST** include the
3101 UUID(s) of the Cinder Volumes created in template.
3104 ONAP Heat Support of Environment Files
3116 A parameter enumerated in a
3117 VNF's Heat Orchestration Template's environment file **MUST** be declared
3119 corresponding VNF's Heat Orchestration Template's YAML file's
3120 ``parameters:`` section.
3123 ONAP Heat VNF Modularity
3127 Requirements Changed
3128 ~~~~~~~~~~~~~~~~~~~~
3135 A shared Heat Orchestration Template resource is a resource that **MUST**
3136 be defined in the base module and will be referenced by one or
3137 more resources in one or more incremental modules.
3139 The UUID of the shared resource (created in the base module) **MUST** be
3140 exposed by declaring a parameter in the
3141 ``outputs`` section of the base module.
3143 For ONAP to provided the UUID value of the shared resource to the
3144 incremental module, the parameter name defined in the ``outputs``
3145 section of the base module **MUST** be defined as a parameter
3146 in the ``parameters`` section of the incremental module.
3148 ONAP will capture the output parameter name and value in the base module
3149 and provide the value to the corresponding parameter(s) in the
3150 incremental module(s).
3153 ONAP TOSCA VNFD Requirements > VNF CSAR Package > VNF Package Contents
3157 Requirements Removed
3158 ~~~~~~~~~~~~~~~~~~~~
3165 The VNF provider **MUST** provide the binaries and images needed to
3166 instantiate the VNF (VNF and VNFC images) either as:
3168 - Local artifact in CSAR: ROOT\\Artifacts\\ **VNF_Image.bin**
3170 - externally referred (by URI) artifact in Manifest file (also may be
3171 referred by VNF Descriptor)
3173 Note: Currently, ONAP doesn't have the capability of Image management,
3174 we upload the image into VIM/VNFM manually.
3177 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Capability Types
3189 The PNFD provided by a PNF vendor **MUST** comply with the following
3190 Capabilities Types as specified in ETSI NFV-SOL001 standard:
3192 - tosca.datatypes.nfv.VirtualLinkable
3195 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Data Types
3207 The PNFD provided by a PNF vendor **MUST** comply with the following Data
3208 Types as specified in ETSI NFV-SOL001 standard:
3210 - tosca.datatypes.nfv.CpProtocolData
3212 - tosca.datatypes.nfv.AddressData
3214 - tosca.datatypes.nfv.L2AddressData
3216 - tosca.datatypes.nfv.L3AddressData
3218 - tosca.datatypes.nfv.LocationInfo
3220 - tosca.datatypes.nfv.CivicAddressElement
3223 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > General
3235 The PNF Descriptor (PNFD) provided by PNF vendor **MUST** comply with
3236 TOSCA/YAML based Service template for PNF descriptor specified in ETSI
3240 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Node Types
3252 The PNFD provided by a PNF vendor **MUST** comply with the following Node
3253 Types as specified in ETSI NFV-SOL001 standard:
3255 - tosca.nodes.nfv.PNF
3257 - tosca.nodes.nfv.PnfExtCp
3259 - tosca.nodes.nfv.Cp
3262 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Policy Types
3274 The PNFD provided by a PNF vendor **MUST** comply with the following Policy
3275 Types as specified in ETSI NFV-SOL001 standard:
3277 - tosca.datatypes.nfv.SecurityGroupRule
3280 ONAP TOSCA VNFD or PNFD Requirements > TOSCA PNF Descriptor > Relationship Types
3292 The PNFD provided by a PNF vendor **MUST** comply with the following
3293 Relationship Types as specified in ETSI NFV-SOL001 standard:
3295 - tosca.datatypes.nfv.VirtualLinksTo
3298 ONAP TOSCA VNFD or PNFD Requirements > TOSCA VNF Descriptor > General
3302 Requirements Changed
3303 ~~~~~~~~~~~~~~~~~~~~
3310 The VNFD **MUST** comply with ETSI GS NFV-SOL001 specification endorsing
3311 the above mentioned NFV Profile and maintaining the gaps with the
3312 requirements specified in ETSI GS NFV-IFA011 standard.
3315 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF Package Contents
3327 If one or more non-MANO artifact(s) is included in the VNF or PNF TOSCA CSAR
3328 package, the Manifest file in this CSAR package **MUST** contain: non-MANO
3329 artifact set which MAY contain following ONAP public tag.
3331 - onap_ves_events: contains VES registration files
3333 - onap_pm_dictionary: contains the PM dictionary files
3335 - onap_yang_modules: contains Yang module files for configurations
3337 - onap_ansible_playbooks: contains any ansible_playbooks
3339 - onap_others: contains any other non_MANO artifacts, e.g. informational
3347 The VNF or PNF package **MUST** contain a a human-readable change log text
3348 file. The Change Log file keeps a history describing any changes in the VNF
3349 or PNF package. The Change Log file is kept up to date continuously from
3350 the creation of the CSAR package.
3357 The VNF or PNF CSAR PACKAGE with TOSCA-Metadata **MUST** include following
3358 additional keywords pointing to TOSCA files:
3360 - ETSI-Entry-Manifest
3362 - ETSI-Entry-Change-Log
3364 Note: For a CSAR containing a TOSCA-Metadata directory, which includes
3365 the TOSCA.meta metadata file. The TOSCA.meta metadata file includes block_0
3366 with the Entry-Definitions keyword pointing to a TOSCA definitions YAML
3367 file used as entry for parsing the contents of the overall CSAR archive.
3374 The PNF TOSCA CSAR PACKAGE Manifest file **MUST** start with the PNF
3375 package metadata in the form of a name-value pairs. Each pair shall appear
3376 on a different line. The name is specified as following:
3382 - pnfd_release_date_time
3384 - pnfd_archive_version
3391 The VNF TOSCA CSAR package Manifest file **MUST** start with the VNF
3392 package metadata in the form of a name-value pairs. Each pair shall appear
3393 on a different line. The name is specified as following:
3399 - vnf_release_date_time
3401 - vnf_package_version
3404 Requirements Changed
3405 ~~~~~~~~~~~~~~~~~~~~
3412 The VNF or PNF CSAR package **MUST** include all artifacts required by
3413 ETSI GS NFV-SOL004 including Manifest file, VNFD or PNFD (or Main
3414 TOSCA/YAML based Service Template) and other optional artifacts.
3421 The VNF or PNF TOSCA PACKAGE **MUST** enumerate all of the open source
3422 licenses their VNF(s) incorporate. CSAR License directory as per ETSI
3425 for example ROOT\\Licenses\\ **License_term.txt**
3432 The VNF or PNF package Manifest file **MUST** contain: VNF or PNF package
3433 meta-data, a list of all artifacts (both internal and external) entry's
3434 including their respected URI's, an algorithm to calculate a digest and
3435 a digest result calculated on the content of each artifacts, as specified
3436 in ETSI GS NFV-SOL004.
3439 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF Package Structure and Format
3451 The VNF or PNF TOSCA CSAR file **MUST** be a zip file with .csar extension.
3454 Requirements Changed
3455 ~~~~~~~~~~~~~~~~~~~~
3462 The VNF or PNF CSAR package **MUST** be arranged as a CSAR archive as
3463 specified in TOSCA Simple Profile in YAML 1.2.
3470 The VNF or PNF package provided by a VNF or PNF vendor **MUST** be with
3471 TOSCA-Metadata directory (CSAR Option 1) as specified in
3474 **Note:** SDC supports only the CSAR Option 1 in Dublin. The Option 2
3475 will be considered in future ONAP releases.
3478 ONAP TOSCA VNFD or PNFD Requirements > VNF or PNF CSAR Package > VNF or PNF Package Authenticity and Integrity
3490 If the VNF or PNF CSAR Package utilizes Option 2 for package security, then
3491 the complete CSAR file **MUST** contain a Digest (a.k.a. hash) for each of
3492 the components of the VNF or PNF package. The table of hashes is included
3493 in the package manifest file, which is signed with the VNF or PNF provider
3494 private key. In addition, the VNF or PNF provider MUST include a signing
3495 certificate that includes the VNF or PNF provider public key, following a
3496 TOSCA pre-defined naming convention and located either at the root of the
3497 archive or in a predefined location specified by the TOSCA.meta file with
3498 the corresponding entry named "ETSI-Entry-Certificate".
3505 If the VNF or PNF CSAR Package utilizes Option 2 for package security, then
3506 the complete CSAR file **MUST** be digitally signed with the VNF or PNF
3507 provider private key. The VNF or PNF provider delivers one zip file
3508 consisting of the CSAR file, a signature file and a certificate file that
3509 includes the VNF or PNF provider public key. The certificate may also be
3510 included in the signature container, if the signature format allows that.
3511 The VNF or PNF provider creates a zip file consisting of the CSAR file with
3512 .csar extension, signature and certificate files. The signature and
3513 certificate files must be siblings of the CSAR file with extensions .cms
3514 and .cert respectively.
3517 PNF Plug and Play > PNF Plug and Play
3521 Requirements Changed
3522 ~~~~~~~~~~~~~~~~~~~~
3529 The PNF **MUST** support one of the protocols for a Service Configuration
3530 message exchange between the PNF and PNF Controller (in ONAP):
3531 a) Netconf/YANG, b) Chef, or c) Ansible.
3533 Note: The PNF Controller may be VF-C, APP-C or SDN-C based on the
3541 The following VES Events **SHOULD** be supported by the PNF: pnfRegistration
3542 VES Event, HVol VES Event, and Fault VES Event. These are onboarded via
3543 he SDC Design Studio.
3545 Note: these VES Events are emitted from the PNF to support PNF Plug and
3546 Play, High Volume Measurements, and Fault events respectively.
3553 Requirements Changed
3554 ~~~~~~~~~~~~~~~~~~~~
3561 When a VNF's Heat Orchestration Template's Resource ID contains an
3562 ``{index}``, the ``{index}`` is a numeric value that **MUST** start at
3563 zero and **MUST** increment by one.
3565 As stated in R-16447,
3566 *a VNF's <resource ID> MUST be unique across all Heat
3567 Orchestration Templates and all HEAT Orchestration Template
3568 Nested YAML files that are used to create the VNF*. While the ``{index}``
3569 will start at zero in the VNF, the ``{index}`` may not start at zero
3570 in a given Heat Orchestration Template or HEAT Orchestration Template
3574 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::InstanceIp
3578 Requirements Changed
3579 ~~~~~~~~~~~~~~~~~~~~
3586 A VNF's Heat Orchestration Template's Resource
3587 ``OS::ContrailV2::InstanceIp`` Resource ID
3588 that is configuring an IPv4 Address on a virtual machine interface
3589 (i.e., OS::ContrailV2::VirtualMachineInterface)
3590 attached to an external network
3591 **MUST** use the naming convention
3593 * ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_IP_{index}``
3597 * ``{vm-type}`` is the vm-type
3598 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3600 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3602 **MUST** increment by one each time a new instance of a ``{vm-type}``
3604 * ``{network-role}`` is the network-role of the network that the
3605 virtual machine interface is attached to
3606 * ``{vmi_index}`` references the instance of the virtual machine interface
3607 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3608 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3609 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3610 new virtual machine interface is defined on the instance of the
3611 ``{vm-type}`` attached to ``{network-role}`` network.
3612 * ``IP`` signifies that an IPv4 address is being configured
3613 * ``{index}`` references the instance of the IPv4 address configured
3614 on the virtual machine interface. The ``{index}`` is a numeric value
3615 that **MUST** start at zero on an
3616 instance of a virtual machine interface and **MUST** increment by one
3617 each time a new IPv4 address is configured on the
3618 virtual machine interface.
3625 A VNF's Heat Orchestration Template's Resource
3626 ``OS::ContrailV2::InstanceIp`` Resource ID
3627 that is configuring an IPv6 Address on a virtual machine interface
3628 (i.e., OS::ContrailV2::VirtualMachineInterface)
3629 attached to an internal network
3630 **MUST** use the naming convention
3632 * ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_v6_IP_{index}``
3636 * ``{vm-type}`` is the vm-type
3637 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3639 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3641 **MUST** increment by one each time a new instance of a ``{vm-type}``
3643 * ``{network-role}`` is the network-role of the network
3644 that the port is attached to
3645 * ``{vmi_index}`` references the instance of the virtual machine interface
3646 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3647 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3648 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3649 new virtual machine interface is defined on the instance of the
3650 ``{vm-type}`` attached to ``{network-role}`` network.
3651 * ``v6_IP`` signifies that an IPv6 address is being configured
3652 * ``{index}`` references the instance of the IPv6 address configured
3653 on the virtual machine interface. The ``{index}`` is a numeric value
3654 that **MUST** start at zero on an
3655 instance of a virtual machine interface and **MUST** increment by one
3656 each time a new IPv6 address is configured on the
3657 virtual machine interface.
3664 A VNF's Heat Orchestration Template's Resource
3665 ``OS::ContrailV2::InstanceIp`` Resource ID
3666 that is configuring an IPv4 Address on a virtual machine interface
3667 (i.e., OS::ContrailV2::VirtualMachineInterface)
3668 attached to an internal network
3669 **MUST** use the naming convention
3671 * ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}_IP_{index}``
3675 * ``{vm-type}`` is the vm-type
3676 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3678 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3680 **MUST** increment by one each time a new instance of a ``{vm-type}``
3682 * ``{network-role}`` is the network-role of the network
3683 that the port is attached to
3684 * ``{vmi_index}`` references the instance of the virtual machine interface
3685 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3686 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3687 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3688 new virtual machine interface is defined on the instance of the
3689 ``{vm-type}`` attached to ``{network-role}`` network.
3690 * ``IP`` signifies that an IPv4 address is being configured
3691 * ``{index}`` references the instance of the IPv4 address configured
3692 on the virtual machine interface. The ``{index}`` is a numeric value
3693 that **MUST** start at zero on an
3694 instance of a virtual machine interface and **MUST** increment by one
3695 each time a new IPv4 address is configured on the
3696 virtual machine interface.
3703 A VNF's Heat Orchestration Template's Resource
3704 ``OS::ContrailV2::InstanceIp`` Resource ID
3705 that is configuring an IPv6 Address on a virtual machine interface
3706 (i.e., OS::ContrailV2::VirtualMachineInterface)
3707 attached to an external network
3708 **MUST** use the naming convention
3710 * ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}_v6_IP_{index}``
3714 * ``{vm-type}`` is the vm-type
3715 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3717 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3719 **MUST** increment by one each time a new instance of a ``{vm-type}``
3721 * ``{network-role}`` is the network-role of the network
3722 that the port is attached to
3723 * ``{vmi_index}`` references the instance of the virtual machine interface
3724 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3725 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3726 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3727 new virtual machine interface is defined on the instance of the
3728 ``{vm-type}`` attached to ``{network-role}`` network.
3729 * ``v6_IP`` signifies that an IPv6 address is being configured
3730 * ``{index}`` references the instance of the IPv6 address configured
3731 on the virtual machine interface. The ``{index}`` is a numeric value
3732 that **MUST** start at zero on an
3733 instance of a virtual machine interface and **MUST** increment by one
3734 each time a new IPv6 address is configured on the
3735 virtual machine interface.
3738 Requirements Removed
3739 ~~~~~~~~~~~~~~~~~~~~
3746 A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::InstanceIp``
3747 that is configuring an IPv4 Address on a sub-interface port attached to a
3748 sub-interface network Resource ID **MUST** use the naming convention
3750 * ``{vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}_IP_{index}``
3754 * ``{vm-type}`` is the vm-type
3755 * ``{vm-type_index}`` is the instance of the ``{vm-type}``
3756 * ``{network-role}`` is the network-role of the network
3757 that the port is attached to
3758 * ``{vmi_index}`` is the instance of the the virtual machine interface
3759 (e.g., port) on the vm-type
3760 attached to the network of ``{network-role}``
3761 * ``IP`` signifies that an IPv4 address is being configured
3762 * ``{index}`` is the index of the IPv4 address
3769 A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::InstanceIp``
3770 that is configuring an IPv6 Address on a sub-interface port attached to a
3771 sub-interface network Resource ID **MUST**
3772 use the naming convention
3774 * ``{vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}_v6_IP_{index}``
3778 * ``{vm-type}`` is the vm-type
3779 * ``{vm-type_index}`` is the instance of the ``{vm-type}``
3780 * ``{network-role}`` is the network-role of the network
3781 that the port is attached to
3782 * ``{vmi_index}`` is the instance of the the virtual machine interface
3783 (e.g., port) on the vm-type
3784 attached to the network of ``{network-role}``
3785 * ``v6_IP`` signifies that an IPv6 address is being configured
3786 * ``{index}`` is the index of the IPv6 address
3789 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::ServiceTemplate
3793 Requirements Changed
3794 ~~~~~~~~~~~~~~~~~~~~
3801 A VNF's Heat Orchestration Template's Resource ``OS::ContrailV2::ServiceTemplate``
3802 Resource ID **MAY** use the naming convention
3804 * ``{vm-type}_RST_{index}``
3808 * ``{vm-type}`` is the vm-type
3809 * ``RST`` signifies that it is the Resource Service Template
3810 * ``{index}`` is the index.
3811 The ``{index}`` starts at zero and increments by one
3812 (as described in R-11690).
3815 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualMachineInterface
3819 Requirements Changed
3820 ~~~~~~~~~~~~~~~~~~~~
3827 A VNF's Heat Orchestration Template's Resource
3828 ``OS::ContrailV2::VirtualMachineInterface`` Resource ID
3829 that is attaching to an internal network
3830 **MUST** use the naming convention
3832 * ``{vm-type}_{vm-type_index}_int_{network-role}_vmi_{vmi_index}``
3836 * ``{vm-type}`` is the vm-type
3837 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3839 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3841 **MUST** increment by one each time a new instance of a ``{vm-type}``
3843 * ``{network-role}`` is the network-role of the network
3844 that the port (i.e. virtual machine interface) is attached to
3845 * ``{vmi_index}`` references the instance of the virtual machine interface
3846 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3847 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3848 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3849 new virtual machine interface is defined on the instance of the
3850 ``{vm-type}`` attached to ``{network-role}`` network.
3857 A VNF's Heat Orchestration Template's Resource
3858 ``OS::ContrailV2::VirtualMachineInterface`` Resource ID
3859 that is attaching to an external network
3860 **MUST** use the naming convention
3862 * ``{vm-type}_{vm-type_index}_{network-role}_vmi_{vmi_index}``
3866 * ``{vm-type}`` is the vm-type
3867 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
3869 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
3871 **MUST** increment by one each time a new instance of a ``{vm-type}``
3873 * ``{network-role}`` is the network-role of the network
3874 that the port (i.e. virtual machine interface) is attached to
3875 * ``{vmi_index}`` references the instance of the virtual machine interface
3876 on the ``{vm-type}`` attached to ``{network-role}`` network. The
3877 ``{vmi_index}`` is a numeric value that **MUST** start at zero on an
3878 instance of a ``{vm-type}`` and **MUST** increment by one each time a
3879 new virtual machine interface is defined on the instance of the
3880 ``{vm-type}`` attached to ``{network-role}`` network.
3883 Requirements Removed
3884 ~~~~~~~~~~~~~~~~~~~~
3891 A VNF's Heat Orchestration Template's Resource
3892 ``OS::ContrailV2::VirtualMachineInterface`` that is attaching to a sub-interface
3893 network Resource ID **MUST** use the naming convention
3895 * ``{vm-type}_{vm-type_index}_subint_{network-role}_vmi_{vmi_index}``
3899 * ``{vm-type}`` is the vm-type
3900 * ``{vm-type_index}`` is the instance of the ``{vm-type}``
3901 * ``{network-role}`` is the network-role of the network
3902 that the port (i.e. virtual machine interface) is attached to
3903 * ``{vmi_index}`` is the instance of the the vmi on the vm-type
3904 attached to the network of ``{network-role}``
3907 Resource IDs > Contrail Heat Resources Resource ID Naming Convention > OS::ContrailV2::VirtualNetwork
3911 Requirements Changed
3912 ~~~~~~~~~~~~~~~~~~~~
3919 A VNF's Heat Orchestration Template's Resource
3920 ``OS::ContrailV2::VirtualNetwork`` Resource ID **MUST** use the naming
3923 * ``int_{network-role}_network``
3925 VNF Heat Orchestration Templates can only create internal networks.
3926 There is no ``{index}`` after ``{network-role}`` because ``{network-role}``
3927 **MUST** be unique in the scope of the VNF's
3928 Heat Orchestration Template.
3931 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Cinder::Volume
3935 Requirements Changed
3936 ~~~~~~~~~~~~~~~~~~~~
3943 A VNF's Heat Orchestration Template's Resource
3944 ``OS::Cinder::Volume``
3947 use the naming convention
3949 * ``{vm-type}_volume_{index}``
3953 * ``{vm-type}`` is the vm-type
3954 * ``{index}`` starts at zero and increments by one (as described in R-11690)
3957 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Cinder::VolumeAttachment
3961 Requirements Changed
3962 ~~~~~~~~~~~~~~~~~~~~
3969 A VNF's Heat Orchestration Template's Resource
3970 ``OS::Cinder::VolumeAttachment``
3973 use the naming convention
3975 * ``{vm-type}_volume_attachment_{index}``
3979 * ``{vm-type}`` is the vm-type
3980 * ``{index}`` starts at zero and increments by one (as described in R-11690)
3983 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Heat::ResourceGroup
3987 Requirements Removed
3988 ~~~~~~~~~~~~~~~~~~~~
3995 A VNF's Heat Orchestration Template's Resource ``OS::Heat::ResourceGroup``
3996 Resource ID that creates sub-interfaces **MUST** use the naming convention
3998 * ``{vm-type}_{vm-type_index}_subint_{network-role}_port_{port-index}_subinterfaces``
4002 * ``{vm-type}`` is the vm-type
4003 * ``{vm-type_index}`` is the instance of the ``{vm-type}``
4004 * ``{network-role}`` is the network-role of the networks
4005 that the sub-interfaces attach to
4006 * ``{port-index}`` is the instance of the the port on the vm-type
4007 attached to the network of ``{network-role}``
4010 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Port
4014 Requirements Changed
4015 ~~~~~~~~~~~~~~~~~~~~
4022 A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
4023 that is creating a *Reserve Port* with an IPv6 address Resource ID
4024 **SHOULD** use the naming convention
4026 * ``reserve_port_{vm-type}_{network-role}_floating_v6_ip_{index}``
4030 * ``{vm-type}`` is the vm-type
4031 * ``{network-role}`` is the network-role of the network
4032 that the port is attached to
4033 * ``{index}`` is the instance of the IPv6 *Reserve Port*
4034 for the vm-type attached to the network of ``{network-role}``.
4035 The ``{index}`` starts at zero and increments by one
4036 (as described in R-11690).
4043 A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
4044 that is creating a *Reserve Port* with an IPv4 address Resource ID
4045 **SHOULD** use the naming convention
4047 * ``reserve_port_{vm-type}_{network-role}_floating_ip_{index}``
4051 * ``{vm-type}`` is the vm-type
4052 * ``{network-role}`` is the network-role of the network
4053 that the port is attached to
4054 * ``{index}`` is the instance of the IPv4 *Reserve Port*
4055 for the vm-type attached to the network of ``{network-role}``.
4056 The ``{index}`` starts at zero and increments by one
4057 (as described in R-11690).
4064 A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
4065 that is attaching to an internal network Resource ID **MUST**
4066 use the naming convention
4068 * ``{vm-type}_{vm-type_index}_int_{network-role}_port_{port-index}``
4072 * ``{vm-type}`` is the vm-type
4073 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
4075 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
4077 **MUST** increment by one each time a new instance of a ``{vm-type}``
4079 * ``{network-role}`` is the network-role of the network
4080 that the port is attached to
4081 * ``{port_index}`` references the instance of the port on the ``{vm-type}``
4082 attached to ``{network-role}`` network. The
4083 ``{port_index}`` is a numeric value that **MUST** start at zero on an
4084 instance of a ``{vm-type}`` and **MUST** increment by one each time a
4085 new port is defined on the instance of the ``{vm-type}`` attached to
4086 ``{network-role}`` network.
4093 A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Port``
4094 that is attaching to an external network Resource ID
4095 **MUST** use the naming convention
4097 * ``{vm-type}_{vm-type_index}_{network-role}_port_{port-index}``
4101 * ``{vm-type}`` is the vm-type
4102 * ``{vm-type_index}`` references the instance of the ``{vm-type}`` in
4104 ``{vm-type_index}`` is a numeric value that **MUST** start at zero
4106 **MUST** increment by one each time a new instance of a ``{vm-type}``
4108 * ``{network-role}`` is the network-role of the network
4109 that the port is attached to
4110 * ``{port_index}`` references the instance of the port on the ``{vm-type}``
4111 attached to ``{network-role}`` network. The
4112 ``{port_index}`` is a numeric value that **MUST** start at zero on an
4113 instance of a ``{vm-type}`` and **MUST** increment by one each time a
4114 new port is defined on the instance of the ``{vm-type}`` attached to
4115 ``{network-role}`` network.
4118 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Neutron::Subnet
4122 Requirements Changed
4123 ~~~~~~~~~~~~~~~~~~~~
4130 A VNF's Heat Orchestration Template's Resource ``OS::Neutron::Subnet``
4131 Resource ID **SHOULD** use the naming convention
4133 * ``int_{network-role}_subnet_{index}``
4137 * ``{network-role}`` is the network-role
4138 * ``{index}`` is the ``{index}`` of the subnet of the network.
4139 The ``{index}`` starts at zero and increments by one
4140 (as described in R-11690).
4143 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Nova::Keypair
4147 Requirements Changed
4148 ~~~~~~~~~~~~~~~~~~~~
4155 A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair`` applies to
4156 one ``{vm-type}`` Resource ID **SHOULD** use the naming convention
4158 * ``{vm-type}_keypair_{index}``
4162 * ``{network-role}`` is the network-role
4163 * ``{index}`` is the ``{index}`` of the keypair.
4164 The ``{index}`` starts at zero and increments by one
4165 (as described in R-11690).
4172 A VNF's Heat Orchestration Template's Resource ``OS::Nova::Keypair`` applies to
4173 all Virtual Machines in the VNF, the Resource ID **SHOULD** use the naming
4176 * ``{vnf-type}_keypair``
4180 * ``{vnf-type}`` describes the VNF
4183 Resource IDs > OpenStack Heat Resources Resource ID Naming Convention > OS::Nova::Server
4187 Requirements Changed
4188 ~~~~~~~~~~~~~~~~~~~~
4195 A VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
4197 **MUST** use the naming convention
4199 * ``{vm-type}_server_{index}``
4203 * ``{vm-type}`` is the vm-type
4204 * ``{index}`` is the index.
4205 The ``{index}`` **MUST** starts at zero and increment by one
4206 as described in R-11690.
4209 Resource Property “name”
4213 Requirements Changed
4214 ~~~~~~~~~~~~~~~~~~~~
4221 If a VNF's Heat Orchestration Template contains the property ``name``
4222 for a non ``OS::Nova::Server`` resource, the intrinsic function
4223 ``str_replace`` **MUST** be used in conjunction with the ONAP
4224 supplied metadata parameter ``vnf_name`` to generate a unique value.
4225 Additional data **MAY** be used in the ``str_replace`` construct
4226 to generate a unique value.
4229 Requirements Removed
4230 ~~~~~~~~~~~~~~~~~~~~
4237 If a VNF's Heat Orchestration Template property ``name``
4238 for a non ``OS::Nova::Server`` resource uses the intrinsic function
4239 ``str_replace`` in conjunction with the ONAP
4240 supplied metadata parameter ``vnf_name`` and does not create
4241 a unique value, additional data **MUST** be used in the
4242 ``str_replace`` to create a unique value, such as ``OS::stack_name``
4243 and/or the ``OS::Heat::ResourceGroup`` ``index``.
4246 Resource: OS::Neutron::Port - Parameters > Introduction > Items to Note
4258 A VNF's Heat Orchestration Template's ``OS::Neutron::Port`` resource's
4260 * Resource ID (defined in R-20453)
4261 * property ``network`` parameter name (defined in R-62983 and
4263 * property ``fixed_ips``, map property ``ip_address`` parameter name
4264 (defined in R-40971, R-04697, R-71577, R-23503, R-78380, R-85235,
4265 R-27818, and R-29765)
4266 * property ``fixed_ips``, map property ``subnet`` parameter name
4267 (defined in R-62802, R-15287, R-84123, R-76160)
4268 * property ``allowed_address_pairs`` parameter name (defined in
4269 R-41492 and R-83418)
4271 **MUST** contain the identical ``{network-role}``.
4274 Requirements Removed
4275 ~~~~~~~~~~~~~~~~~~~~
4282 If the VNF's ports connected to a unique network (internal or external)
4283 and the port's IP addresses are cloud assigned IP Addresses,
4284 all the IPv4 Addresses **MUST** be from
4285 the same subnet and all the IPv6 Addresses **MUST** be from the
4293 A VNF **MAY** have one or more ports connected to a unique
4294 internal network. All VNF ports connected to the unique internal
4295 network **MUST** have cloud assigned IP Addresses
4296 or **MUST** have statically assigned IP addresses.
4303 A VNF **MAY** have one or more ports connected to a unique
4304 external network. All VNF ports connected to the unique external
4305 network **MUST** have cloud assigned IP Addresses
4306 or **MUST** have ONAP SDN-C assigned IP addresses.
4309 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address
4313 Requirements Removed
4314 ~~~~~~~~~~~~~~~~~~~~
4321 If a VNF has two or more ports that require a Virtual IP Address (VIP),
4322 a VNF's Heat Orchestration Template's Resource
4323 ``OS::Neutron::Port`` property ``allowed_address_pairs``
4324 map property ``ip_address`` parameter
4328 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, External Networks
4340 When the VNF's Heat Orchestration Template's resource
4341 ``OS::Neutron::Port`` is attaching to an external network
4342 (per the ONAP definition, see Requirement R-57424),
4343 and the IPv4 VIP address and/or IPv6 VIP address
4344 is **not** supported by the ONAP data model,
4345 the property ``allowed_address_pairs`` map property ``ip_address``
4347 * Parameter name **MAY** use any naming convention. That is, there is no
4348 ONAP mandatory parameter naming convention.
4349 * Parameter **MAY** be declared as type ``string`` or type
4350 ``comma_delimited_list``.
4352 And the ``OS::Neutron::Port`` resource **MUST** contain
4353 resource-level ``metadata`` (not property-level).
4355 And the ``metadata`` format **MUST** must contain the
4356 key value ``aap_exempt`` with a list of all
4357 ``allowed_address_pairs`` map property ``ip_address`` parameters
4358 **not** supported by the ONAP data model.
4361 Requirements Changed
4362 ~~~~~~~~~~~~~~~~~~~~
4369 When the VNF's Heat Orchestration Template's resource
4370 ``OS::Neutron::Port`` is attaching to an external network
4371 (per the ONAP definition, see Requirement R-57424),
4372 and the IPv6 VIP is required to be supported by the ONAP data model,
4373 the property ``allowed_address_pairs`` map property ``ip_address``
4374 parameter name **MUST** follow the naming convention
4376 * ``{vm-type}_{network-role}_floating_v6_ip``
4380 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
4381 * ``{network-role}`` is the {network-role} of the external network
4383 And the parameter **MUST** be declared as type ``string``.
4385 As noted in the introduction to this section, the ONAP data model
4386 can only support one IPv6 VIP address.
4393 If a VNF's Heat Orchestration Template's resource
4394 ``OS::Neutron::Port`` is attaching to an external network (per the
4395 ONAP definition, see Requirement R-57424), the
4396 property ``allowed_address_pairs``
4397 map property ``ip_address`` parameter(s)
4398 **MUST NOT** be enumerated in the
4399 VNF's Heat Orchestration Template's Environment File.
4406 When the VNF's Heat Orchestration Template's resource
4407 ``OS::Neutron::Port`` is attaching to an external network
4408 (per the ONAP definition, see Requirement R-57424),
4409 and the IPv4 VIP is required to be supported by the ONAP data model,
4410 the property ``allowed_address_pairs`` map property ``ip_address``
4411 parameter name **MUST** follow the naming convention
4413 * ``{vm-type}_{network-role}_floating_ip``
4417 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
4418 * ``{network-role}`` is the {network-role} of the external network
4420 And the parameter **MUST** be declared as type ``string``.
4422 As noted in the introduction to this section, the ONAP data model
4423 can only support one IPv4 VIP address.
4426 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, External Networks, Supported by Automation
4430 Requirements Removed
4431 ~~~~~~~~~~~~~~~~~~~~
4438 If a VNF has two or more ports that
4439 attach to an external network that require a Virtual IP Address (VIP),
4440 and the VNF requires ONAP automation to assign the IP address,
4441 all the Virtual Machines using the VIP address **MUST**
4442 be instantiated in the same Base Module Heat Orchestration Template
4443 or in the same Incremental Module Heat Orchestration Template.
4450 If a VNF requires ONAP to assign a Virtual IP (VIP) Address to
4451 ports connected an external network, the port
4452 **MUST NOT** have more than one IPv6 VIP address.
4459 The VNF's Heat Orchestration Template's Resource
4460 ``OS::Neutron::Port`` property ``allowed_address_pairs``
4461 map property ``ip_address`` parameter
4462 ``{vm-type}_{network-role}_floating_v6_ip``
4463 **MUST NOT** be enumerated in the
4464 VNF's Heat Orchestration Template's Environment File.
4471 If a VNF requires ONAP to assign a Virtual IP (VIP) Address to
4472 ports connected an external network, the port
4473 **MUST NOT** have more than one IPv4 VIP address.
4480 The VNF's Heat Orchestration Template's Resource
4481 ``OS::Neutron::Port`` property ``allowed_address_pairs``
4482 map property ``ip_address`` parameter
4483 **MUST** be declared as type ``string``.
4486 Resource: OS::Neutron::Port - Parameters > Property: allowed_address_pairs, Map Property: ip_address > VIP Assignment, Internal Networks
4498 When the VNF's Heat Orchestration Template's Resource
4499 ``OS::Neutron::Port`` is attaching to an internal network (per the
4500 ONAP definition, see Requirements R-52425 and R-46461),
4501 and an IPv4 Virtual IP (VIP)
4502 address is assigned using the property ``allowed_address_pairs``
4503 map property ``ip_address``,
4504 the parameter name **MUST** follow the
4507 * ``{vm-type}_int_{network-role}_floating_ip``
4511 * ``{vm-type}`` is the {vm-type} associated with the
4513 * ``{network-role}`` is the {network-role} of the external
4516 And the parameter **MUST** be declared as ``type: string``
4517 and **MUST** be enumerated in the environment file.
4521 the parameter name **MUST** follow the
4524 * ``{vm-type}_int_{network-role}_floating_ips``
4528 * ``{vm-type}`` is the {vm-type} associated with the
4530 * ``{network-role}`` is the {network-role} of the external
4533 And the parameter **MUST** be declared as ``type: comma_delimited_list``
4534 and **MUST** be enumerated in the environment file.
4541 When the VNF's Heat Orchestration Template's Resource
4542 ``OS::Neutron::Port`` is attaching to an internal network (per the
4543 ONAP definition, see Requirements R-52425 and R-46461),
4544 and an IPv6 Virtual IP (VIP)
4546 using the property ``allowed_address_pairs``
4547 map property ``ip_address``,
4548 the parameter name **MUST** follow the
4551 * ``{vm-type}_int_{network-role}_floating_v6_ip``
4555 * ``{vm-type}`` is the {vm-type} associated with the
4557 * ``{network-role}`` is the {network-role} of the external
4560 And the parameter **MUST** be declared as ``type: string``
4561 and **MUST** be enumerated in the environment file
4565 the parameter name **MUST** follow the
4568 * ``{vm-type}_int_{network-role}_floating_v6_ips``
4572 * ``{vm-type}`` is the {vm-type} associated with the
4574 * ``{network-role}`` is the {network-role} of the external
4577 And the parameter **MUST** be declared as ``type: comma_delimited_list``
4578 and **MUST** be enumerated in the environment file.
4581 Resource: OS::Neutron::Port - Parameters > Property: fixed_ips, Map Property: ip_address
4585 Requirements Changed
4586 ~~~~~~~~~~~~~~~~~~~~
4593 When the VNF's Heat Orchestration Template's Resource
4594 ``OS::Neutron::Port`` is attaching to an internal network (per the
4595 ONAP definition, see Requirements R-52425 and R-46461),
4596 and an IPv4 address is assigned
4597 using the property ``fixed_ips``
4598 map property ``ip_address`` and the parameter type is
4599 defined as a ``string``,
4600 the parameter name **MUST** follow the
4603 * ``{vm-type}_int_{network-role}_ip_{index}``
4607 * ``{vm-type}`` is the {vm-type} associated with the
4608 ``OS::Nova::Server``
4609 * ``{network-role}`` is the {network-role} of the internal network
4610 * ``{index}`` is a numeric value that **MUST** start at zero in a
4611 VNF's Heat Orchestration Template and **MUST** increment by one
4618 When the VNF's Heat Orchestration Template's Resource
4619 ``OS::Neutron::Port`` is attaching to an external network (per the
4620 ONAP definition, see Requirement R-57424),
4621 and an IPv6 address is assigned
4622 using the property ``fixed_ips``
4623 map property ``ip_address`` and the parameter type is defined as a string,
4624 the parameter name **MUST** follow the
4627 * ``{vm-type}_{network-role}_v6_ip_{index}``
4631 * ``{vm-type}`` is the {vm-type} associated with the
4632 ``OS::Nova::Server``
4633 * ``{network-role}`` is the {network-role} of the external network
4634 * ``{index}`` is a numeric value that **MUST** start at zero in a
4635 VNF's Heat Orchestration Template and **MUST** increment by one
4642 When the VNF's Heat Orchestration Template's Resource
4643 ``OS::Neutron::Port`` is attaching to an external network (per the
4644 ONAP definition, see Requirement R-57424),
4645 and an IPv4 address is assigned
4646 using the property ``fixed_ips``
4647 map property ``ip_address`` and the parameter type is defined as a string,
4648 the parameter name **MUST** follow the
4651 * ``{vm-type}_{network-role}_ip_{index}``
4655 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
4656 * ``{network-role}`` is the {network-role} of the external network
4657 * ``{index}`` is a numeric value that **MUST** start at zero in a
4658 VNF's Heat Orchestration Template and **MUST** increment by one
4665 When the VNF's Heat Orchestration Template's Resource
4666 ``OS::Neutron::Port`` is attaching to an internal network (per the
4667 ONAP definition, see Requirements R-52425 and R-46461),
4668 and an IPv6 address is assigned
4669 using the property ``fixed_ips``
4670 map property ``ip_address`` and the parameter type is defined as a
4672 the parameter name **MUST** follow the
4675 * ``{vm-type}_int_{network-role}_v6_ip_{index}``
4679 * ``{vm-type}`` is the {vm-type} associated with the ``OS::Nova::Server``
4680 * ``{network-role}`` is the {network-role} of the internal network
4681 * ``{index}`` is a numeric value that **MUST** start at zero in a
4682 VNF's Heat Orchestration Template and **MUST** increment by one
4685 Resource: OS::Neutron::Port - Parameters > Property: network
4689 Requirements Changed
4690 ~~~~~~~~~~~~~~~~~~~~
4697 When the VNF's Heat Orchestration Template's Resource
4698 ``OS::Neutron::Port``
4699 is in an incremental module and
4700 is attaching to an internal network (per the
4701 ONAP definition, see Requirements R-52425 and R-46461),
4702 the ``network`` parameter name **MUST**
4704 * follow the naming convention ``int_{network-role}_net_id`` if the
4705 network UUID value is used to reference the network
4706 * follow the naming convention ``int_{network-role}_net_name`` if the
4707 network name in is used to reference the network.
4709 where ``{network-role}`` is the network-role of the internal network and
4710 a ``get_param`` **MUST** be used as the intrinsic function.
4713 Requirements Removed
4714 ~~~~~~~~~~~~~~~~~~~~
4721 When the VNF's Heat Orchestration Template's resource
4722 ``OS::Neutron::Port`` is attaching to an internal network (per the
4723 ONAP definition, see Requirements R-52425 and R-46461),
4724 and the internal network is created in the
4725 same Heat Orchestration Template as the ``OS::Neutron::Port``,
4726 the ``network`` property value **MUST** obtain the UUID
4727 of the internal network by using the intrinsic function
4729 and referencing the Resource ID of the internal network.
4732 Resource: OS::Nova::Server - Parameters
4736 Requirements Changed
4737 ~~~~~~~~~~~~~~~~~~~~
4744 A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource's
4746 * Resource ID (defined in R-29751)
4747 * property ``image`` parameter name (defined in R-58670)
4748 * property ``flavor`` parameter name (defined in R-45188)
4749 * property ``name`` parameter name (defined in R-54171 & R-87817)
4750 * property ``networks`` map property ``port`` value which is a
4751 ``OS::Neutron::Port`` Resource ID (defined in R-20453)
4752 referenced using the intrinsic function ``get_attr``
4754 **MUST** contain the identical ``{vm-type}``
4755 and **MUST** follow the naming conventions defined
4756 in R-58670, R-45188, R-54171, R-87817, and R-29751. And the ``{index}`` in
4757 the ``OS::Nova::Server`` Resource ID (defined in R-29751) **MUST** match
4758 the ``{vm-type_index}`` defined in
4759 the ``OS::Nova::Server`` property ``networks`` map property ``port``
4760 referenced ``OS::Neutron::Port`` Resource ID (defined in R-20453).
4763 Resource: OS::Nova::Server - Parameters > Property: Name
4767 Requirements Changed
4768 ~~~~~~~~~~~~~~~~~~~~
4775 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
4776 property ``name`` parameter is defined as a ``string``,
4777 the parameter name **MUST** follow the naming convention
4779 * ``{vm-type}_name_{index}``
4781 where ``{index}`` is a numeric value that **MUST** start at
4782 zero in a VNF's Heat Orchestration Template and **MUST** increment by one.
4785 Requirements Removed
4786 ~~~~~~~~~~~~~~~~~~~~
4793 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
4794 property ``name`` parameter is defined as a ``string``, a parameter
4795 **MUST** be delcared for
4796 each ``OS::Nova::Server`` resource associated with the ``{vm-type}``.
4803 When the VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
4804 property ``name`` parameter is defined as a ``comma_delimited_list``,
4805 a parameter **MUST** be delcared once for all ``OS::Nova::Server`` resources
4806 associated with the ``{vm-type}``.
4809 Resource: OS::Nova::Server - Parameters > Property: availability_zone
4813 Requirements Changed
4814 ~~~~~~~~~~~~~~~~~~~~
4821 The VNF's Heat Orchestration Template's Resource ``OS::Nova::Server``
4822 property ``availability_zone`` parameter name
4823 **MUST** follow the naming convention
4825 * ``availability_zone_{index}``
4827 where ``{index}`` is a numeric value that **MUST** start at zero
4828 in a VNF's Heat Orchestration Templates and **MUST**
4832 Resource: OS::Nova::Server Metadata Parameters > environment_context
4836 Requirements Removed
4837 ~~~~~~~~~~~~~~~~~~~~
4844 If a VNF's Heat Orchestration Template's ``OS::Nova::Server Resource``
4845 ``metadata`` map value parameter ``environment_context`` is passed into a
4847 file, the parameter name ``environment_context`` **MUST NOT** change.
4850 Resource: OS::Nova::Server Metadata Parameters > vf_module_id
4854 Requirements Removed
4855 ~~~~~~~~~~~~~~~~~~~~
4862 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4864 ``metadata`` key/value pair ``vf_module_id`` is passed into a
4866 file, the key/value pair name ``vf_module_id`` **MUST NOT** change.
4869 Resource: OS::Nova::Server Metadata Parameters > vf_module_index
4881 A VNF's Heat Orchestration Template's ``OS::Nova::Server``
4882 resource property ``metadata`` **MAY**
4883 contain the key/value pair ``vf_module_index``.
4886 Requirements Changed
4887 ~~~~~~~~~~~~~~~~~~~~
4894 A VNF's Heat Orchestration Template's ``OS::Nova::Server``
4895 resource property ``metadata``
4896 key/value pair ``vf_module_index``
4897 value **MUST** be obtained via a ``get_param``.
4900 Requirements Removed
4901 ~~~~~~~~~~~~~~~~~~~~
4908 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4909 property ``metadata`` key/value pair ``vf_module_index`` is passed into a
4910 Nested YAML file, the key/value pair
4911 ``vf_module_index`` **MUST NOT** change.
4914 Resource: OS::Nova::Server Metadata Parameters > vf_module_name
4926 A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4927 property metadata **SHOULD** contain the key/value pair ``vf_module_name``.
4930 Requirements Changed
4931 ~~~~~~~~~~~~~~~~~~~~
4938 A VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4939 property ``metadata`` key/value pair ``vf_module_name``
4941 be obtained via a ``get_param``.
4944 Requirements Removed
4945 ~~~~~~~~~~~~~~~~~~~~
4952 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4953 property ``metadata`` key/value pair ``vf_module_name`` is passed into a
4955 file, the key/value pair name ``vf_module_name`` **MUST NOT** change.
4958 Resource: OS::Nova::Server Metadata Parameters > vm_role
4962 Requirements Changed
4963 ~~~~~~~~~~~~~~~~~~~~
4970 If a VNF's Heat Orchestration Template's ``OS::Nova::Server``
4972 ``metadata`` key/value pair ``vm_role`` value is obtained via
4973 ``get_param``, the parameter **MAY** be declared as
4975 * ``vm_role`` and the parameter defined as ``type: string``.
4976 * ``vm_roles`` and the parameter defined as ``type: comma_delimited_list``.
4977 * ``{vm-type}_vm_role`` and the parameter defined as ``type: string``.
4980 Requirements Removed
4981 ~~~~~~~~~~~~~~~~~~~~
4988 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
4989 property ``metadata`` key/value pair ``vm_role`` is passed into a Nested
4991 file, the key/value pair name ``vm_role`` **MUST NOT** change.
4994 Resource: OS::Nova::Server Metadata Parameters > vnf_id
4998 Requirements Removed
4999 ~~~~~~~~~~~~~~~~~~~~
5006 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
5008 ``metadata`` key/value pair ``vnf_id`` is passed into a Nested YAML
5009 file, the key/value pair name ``vnf_id`` **MUST NOT** change.
5012 Resource: OS::Nova::Server Metadata Parameters > vnf_name
5016 Requirements Removed
5017 ~~~~~~~~~~~~~~~~~~~~
5024 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
5026 ``metadata`` key/value pair ``vnf_name`` is passed into a Nested YAML
5027 file, the key/value pair name ``vnf_name`` **MUST NOT** change.
5030 Resource: OS::Nova::Server Metadata Parameters > workload_context
5034 Requirements Removed
5035 ~~~~~~~~~~~~~~~~~~~~
5042 If a VNF's Heat Orchestration Template's ``OS::Nova::Server`` resource
5043 property ``metadata`` key/value pair ``workload_context``
5044 is passed into a Nested YAML
5045 file, the key/value pair name ``workload_context`` **MUST NOT** change.
5048 VNF On-boarding and package management > Compute, Network, and Storage Requirements
5052 Requirements Changed
5053 ~~~~~~~~~~~~~~~~~~~~
5060 The VNF or PNF Provider **MUST** provide human readable documentation
5061 (not in the on-boarding package) to describe scaling capabilities to manage
5062 scaling characteristics of the VNF or PNF.
5069 The VNF provider **MUST** provide the binaries and images
5070 needed to instantiate the VNF (VNF and VNFC images).
5077 The VNF HEAT Package **MUST** include VNF topology that describes basic
5078 network and application connectivity internal and external to the VNF
5079 including Link type, KPIs, Bandwidth, latency, jitter, QoS (if applicable)
5083 VNF On-boarding and package management > Licensing Requirements
5087 Requirements Changed
5088 ~~~~~~~~~~~~~~~~~~~~
5095 The VNF or PNF provider **MUST NOT** require additional
5096 infrastructure such as a VNF or PNF provider license server for VNF or PNF provider
5097 functions and metrics.
5104 The VNF or PNF provider **MUST** enumerate all of the open
5105 source licenses their VNF or PNF(s) incorporate.
5112 The VNF or PNF provider **MUST** agree to the process that can
5113 be met by Service Provider reporting infrastructure. The Contract
5114 shall define the reporting process and the available reporting tools.
5121 The VNF or PNF provider **MUST NOT** require audits
5122 of Service Provider's business.
5129 The VNF or PNF provider **MUST** provide a universal license key
5130 per VNF or PNF to be used as needed by services (i.e., not tied to a VM
5131 instance) as the recommended solution. The VNF or PNF provider may provide
5132 pools of Unique VNF or PNF License Keys, where there is a unique key for
5133 each VNF or PNF instance as an alternate solution. Licensing issues should
5134 be resolved without interrupting in-service VNFs or PNFs.
5141 The VNF or PNF provider **MUST** support the metadata about
5142 licenses (and their applicable entitlements) as defined in this
5143 specification for VNF or PNF software, and any license keys required to authorize
5144 use of the VNF or PNF software. This metadata will be used to facilitate
5145 onboarding the VNF or PNF into the ONAP environment and automating processes
5146 for putting the licenses into use and managing the full lifecycle of
5147 the licenses. The details of this license model are described in
5148 Tables C1 to C8 in the Appendix.
5150 Note: License metadata support in ONAP is not currently available
5151 and planned for 1Q 2018.
5158 The VNF or PNF **MUST** provide metrics (e.g., number of sessions,
5159 number of subscribers, number of seats, etc.) to ONAP for tracking
5163 VNF On-boarding and package management > Resource Configuration
5167 Requirements Changed
5168 ~~~~~~~~~~~~~~~~~~~~
5175 The VNF or PNF **MUST** support and provide artifacts for configuration
5176 management using at least one of the following technologies;
5177 a) Netconf/YANG, b) Chef, or c) Ansible.
5179 Note: The requirements for Netconf/YANG, Chef, and Ansible protocols
5180 are provided separately and must be supported only if the corresponding
5181 protocol option is provided by the VNF or PNF providor.
5184 VNF On-boarding and package management > Resource Configuration > Configuration Management via Ansible
5188 Requirements Changed
5189 ~~~~~~~~~~~~~~~~~~~~
5196 The VNF or PNF provider **MUST** provide playbooks to be loaded
5197 on the appropriate Ansible Server.
5204 The VNF or PNF provider **MUST** provide a JSON file for each
5205 supported action for the VNF or PNF. The JSON file must contain key value
5206 pairs with all relevant values populated with sample data that illustrates
5207 its usage. The fields and their description are defined in Table B1
5215 The VNF or PNF Package **MUST** include configuration scripts
5216 for boot sequence and configuration.
5223 The VNF or PNF provider **MUST** provide configurable parameters
5224 (if unable to conform to YANG model) including VNF or PNF attributes/parameters
5225 and valid values, dynamic attributes and cross parameter dependencies
5226 (e.g., customer provisioning data).
5229 VNF On-boarding and package management > Resource Configuration > Configuration Management via Chef
5233 Requirements Changed
5234 ~~~~~~~~~~~~~~~~~~~~
5241 The VNF or PNF provider **MUST** provide a JSON file for each
5242 supported action for the VNF or PNF. The JSON file must contain key value
5243 pairs with all relevant values populated with sample data that illustrates
5244 its usage. The fields and their description are defined in Tables A1
5245 and A2 in the Appendix.
5247 Note: Chef support in ONAP is not currently available and planned for 4Q 2017.
5254 The VNF or PNF provider **MUST** provide cookbooks to be loaded
5255 on the appropriate Chef Server.
5258 VNF On-boarding and package management > Resource Configuration > Configuration Management via NETCONF/YANG
5262 Requirements Changed
5263 ~~~~~~~~~~~~~~~~~~~~
5270 The VNF or PNF provider **SHOULD** provide a Resource/Device YANG model
5271 as a foundation for creating the YANG model for configuration.
5274 VNF On-boarding and package management > Resource Control Loop
5278 Requirements Changed
5279 ~~~~~~~~~~~~~~~~~~~~
5286 The VNF or PNF Package **MUST** include documentation for each KPI, provide
5287 lower and upper limits.
5294 The VNF or PNF Package **MUST** include documentation for each KPI,
5295 identify the suggested actions that need to be performed when a
5296 threshold crossing alert event is recorded.
5303 The VNF or PNF Documentation Package **MUST** describe the
5304 fault, performance, capacity events/alarms and other event records
5305 that are made available by the VNF or PNF.
5312 The VNF or PNF Documentation Package **MUST** include documentation which must
5313 include a unique identification string for the specific VNF or PNF, a description
5314 of the problem that caused the error, and steps or procedures to perform
5315 Root Cause Analysis and resolve the issue.
5322 The VNF or PNF Documentation Package **MUST** describe
5323 any requirements for the monitoring component of tools for Network
5324 Cloud automation and management to provide these records to components
5332 The VNF or PNF Package **MUST** include documentation to when applicable,
5333 provide calculators needed to convert raw data into appropriate reporting
5341 The VNF or PNF Package **MUST** include documentation about the monitoring
5342 parameters that must include latencies, success rates, retry rates, load
5343 and quality (e.g., DPM) for the key transactions/functions supported by
5344 the VNF or PNF and those that must be exercised by the VNF or PNF in order to perform
5352 The VNF or PNF Package **MUST** include documentation about monitoring
5353 parameters/counters exposed for virtual resource management and VNF or PNF
5354 application management.
5361 The VNF or PNF Documentation Package **MUST**, when relevant,
5362 provide a threshold crossing alert point for each KPI and describe the
5363 significance of the threshold crossing.
5370 The VNF or PNF Documentation Package **MUST** describe
5371 the characteristics for the VNF or PNF reliability and high availability.
5378 The VNF or PNF Documentation Package **MUST** describe all
5379 parameters that are available to monitor the VNF or PNF after instantiation
5380 (includes all counters, OIDs, PM data, KPIs, etc.) that must be
5381 collected for reporting purposes.
5388 The VNF Package **MUST** include documentation about KPIs and
5389 metrics that need to be collected at each VM for capacity planning
5390 and performance management purposes.
5397 The VNF or PNF Documentation Package **MUST** provide the VNF or PNF
5398 Policy Description to manage the VNF or PNF runtime lifecycle. The document
5399 must include a description of how the policies (conditions and actions)
5400 are implemented in the VNF or PNF.
5407 The VNF or PNF Package **MUST** include documentation which must include
5408 all events (fault, measurement for VNF or PNF Scaling, Syslogs, State Change
5409 and Mobile Flow), that need to be collected at each VM, VNFC (defined in `VNF Guidelines <https://onap.readthedocs.io/en/latest/submodules/vnfrqts/guidelines.git/docs/vnf_guidelines.html>`__ ) and for the overall VNF or PNF.
5416 The VNF or PNF Package **MUST** include documentation which must include
5417 all events, severity level (e.g., informational, warning, error) and
5418 descriptions including causes/fixes if applicable for the event.
5425 The VNF or PNF Documentation Package **MUST** describe
5426 supported VNF or PNF scaling capabilities and capacity limits (e.g., number
5427 of users, bandwidth, throughput, concurrent calls).
5430 Requirements Removed
5431 ~~~~~~~~~~~~~~~~~~~~
5438 The xNF provider **MUST** provide an XML file that contains a
5439 list of xNF error codes, descriptions of the error, and possible
5440 causes/corrective action.
5447 The xNF provider **MUST** provide an artifact per xNF that contains
5448 all of the xNF Event Records supported. The artifact should include
5449 reference to the specific release of the xNF Event Stream Common Event
5450 Data Model document it is based on. (e.g.,
5451 `VES Event Listener <https://onap.readthedocs.io/en/latest/submodules/vnfsdk/model.git/docs/files/VESEventListener.html>`__)
5454 VNF On-boarding and package management > Resource Description
5466 The VNF or PNF PROVIDER **MUST** provide FM Meta Data to support the
5467 analysis of fault events delivered to DCAE. The Meta Data must be
5468 included in the VES Registration YAML file with each fault event
5469 supported by that NF at onboarding time and the Meta Data must follow
5470 the VES Event Listener and VES Event Registration Specifications.
5477 The VNF or PNF PROVIDER *MUST* provide the Service Provider with
5478 PM Meta Data (PM Dictionary) to support the analysis of PM events delivered
5479 to DCAE. The PM Dictionary is to be provided as a separate YAML artifact at
5480 onboarding and must follow the VES Event Listener Specification and VES
5481 Event Registration Specification which contain the format and content
5485 Requirements Changed
5486 ~~~~~~~~~~~~~~~~~~~~
5493 The VNF Provider **MUST** provide documentation regarding any dependency
5494 (e.g. affinity, anti-affinity) the VNF has on other VNFs and resources.
5501 The VNF or PNF Documentation Package **MUST** describe the
5502 VNF or PNF Functional Capabilities that are utilized to operationalize the
5503 VNF or PNF and compose complex services.
5510 The VNF or PNF Documentation Package **MUST** include
5511 a description of parameters that can be monitored for the VNF or PNF
5512 and event records (status, fault, flow, session, call, control
5513 plane, etc.) generated by the VNF or PNF after instantiation.
5520 The VNF or PNF Documentation Package **MUST** describe the VNF or PNF
5521 Management APIs, which must include information and tools for ONAP to
5522 deploy and configure (initially and ongoing) the VNF or PNF application(s)
5523 (e.g., NETCONF APIs) which includes a description of configurable
5524 parameters for the VNF or PNF and whether the parameters can be configured
5525 after VNF or PNF instantiation.
5532 The VNF or PNF package **MUST** provide :ref:`VES Event Registration <ves_event_registration_3_2>`
5533 for all VES events provided by that VNF or PNF.
5540 The VNF Documentation Package **MUST** contain a list of the files within the VNF
5541 package that are static during the VNF's runtime.
5548 The VNF or PNF Documentation Package **MUST** describe the
5549 VNF or PNF Functional APIs that are utilized to build network and
5550 application services. This document describes the externally exposed
5551 functional inputs and outputs for the VNF or PNF, including interface
5552 format and protocols supported.
5559 The VNF or PNF Documentation Package **MUST** describe the VNF or PNF
5560 Management APIs, which must include information and tools for
5561 ONAP to monitor the health of the VNF or PNF (conditions that require
5562 healing and/or scaling responses).
5569 The VNF or PNF Documentation Package **MUST** include a
5570 description of runtime lifecycle events and related actions (e.g.,
5571 control responses, tests) which can be performed for the VNF or PNF.
5578 For HEAT package, the VNF Package **MUST** include VNF Identification Data to
5579 uniquely identify the resource for a given VNF provider. The identification
5580 data must include: an identifier for the VNF, the name of the VNF as was
5581 given by the VNF provider, VNF description, VNF provider, and version.
5584 Requirements Removed
5585 ~~~~~~~~~~~~~~~~~~~~
5592 The xNF provider **MUST** include a Manifest File that
5593 contains a list of all the components in the xNF package.
5596 VNF On-boarding and package management > Testing
5600 Requirements Changed
5601 ~~~~~~~~~~~~~~~~~~~~
5608 The VNF provider **MUST** provide software components that
5609 can be packaged with/near the VNF, if needed, to simulate any functions
5610 or systems that connect to the VNF system under test. This component is
5611 necessary only if the existing testing environment does not have the
5612 necessary simulators.
5619 The VNF Documentation Package **MUST** describe
5620 the tests that were conducted by the VNF provider and the test results.
5627 The VNF provider **MUST** provide their testing scripts to
5631 VNF Resiliency > Monitoring & Dashboard
5635 Requirements Changed
5636 ~~~~~~~~~~~~~~~~~~~~
5643 The VNF **MUST** provide a method of metrics gathering for each
5644 layer's performance to identify variances in the allocations so
5645 they can be addressed.
5652 Requirements Changed
5653 ~~~~~~~~~~~~~~~~~~~~
5660 When a VNF connects to two or more unique networks, each
5661 network **MUST** be assigned a unique ``{network-role}``
5662 in the context of the VNF for use in the VNF's Heat Orchestration
5670 When a VNF's port connects to an internal network or external network,
5671 a network role, referred to
5672 as the ``{network-role}`` **MUST** be assigned to the network for
5673 use in the VNF's Heat Orchestration Template. The ``{network-role}``
5674 is used in the VNF's Heat Orchestration Template resource IDs
5675 and resource property parameter names.
5682 A VNF's Heat Orchestration Template's ``{network-role}`` **MUST** contain
5683 only alphanumeric characters and/or underscores '_' and
5685 * **MUST NOT** contain any of the following strings: ``_int`` or ``int_``
5687 * **MUST NOT** end in the string: ``_v6``
5688 * **MUST NOT** contain the strings ``_#_``, where ``#`` is a number
5689 * **MUST NOT** end in the string: ``_#``, where ``#`` is a number
5696 Requirements Changed
5697 ~~~~~~~~~~~~~~~~~~~~
5704 When a VNF's Heat Orchestration Template creates a Virtual Machine
5705 (i.e., ``OS::Nova::Server``),
5706 each "class" of VMs **MUST** be assigned a VNF unique
5707 ``{vm-type}``; where "class" defines VMs that
5708 **MUST** have the following identical characteristics:
5710 1.) ``OS::Nova::Server`` resource property ``flavor`` value
5712 2.) ``OS::Nova::Server`` resource property ``image`` value
5714 3.) Cinder Volume attachments
5716 - Each VM in the "class" **MUST** have the identical Cinder Volume
5719 4.) Network attachments and IP address requirements
5721 - Each VM in the "class" **MUST** have the identical number of
5722 ports connecting to the identical networks and requiring the identical
5723 IP address configuration.
5726 Requirements Removed
5727 ~~~~~~~~~~~~~~~~~~~~
5734 A VNF's Heat Orchestration Template's Resource that is associated with a
5735 unique Virtual Machine type **MUST** include ``{vm-type}`` as part of the
5743 A VNF's Heat Orchestration Template's Resource property parameter that is
5744 associated with a unique Virtual Machine type **MUST** include
5745 ``{vm-type}`` as part of the parameter name with two exceptions:
5747 1.) The Resource ``OS::Nova::Server`` property ``availability_zone``
5748 parameter **MUST NOT** be prefixed with a common ``{vm-type}`` identifier,
5750 2.) The Resource ``OS::Nova::Server`` eight mandatory and optional
5752 parameters (i.e., ``vnf_name``, ``vnf_id``, ``vf_module_id``,
5753 ``vf_module_name``, ``vm_role``,
5754 ``vf_module_index``, ``environment_context``, ``workload_context``)
5755 **MUST NOT** be prefixed with a common ``{vm-type}`` identifier.