summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBozawglanian, Hagop (hb755d) <hagop.bozawglanian@att.com>2018-10-30 22:04:55 +0000
committerBozawglanian, Hagop (hb755d) <hagop.bozawglanian@att.com>2018-10-30 22:04:55 +0000
commit7099d63e46b0bc9bb5591a5f28e535b95fba2d86 (patch)
treed7270e6ad950ff556e1692c103ecb64cab5b5e7f
parent1baff9156464bed7830483deb1f704993e620360 (diff)
VNFRQTS - Updating Management Requirements
Issue-ID: VNFRQTS-260 Change-Id: Icc54a27ade829e92a9d23f716b167911301b196d Signed-off-by: Bozawglanian, Hagop (hb755d) <hagop.bozawglanian@att.com>
-rwxr-xr-xdocs/Chapter7/Configuration-Management.rst694
-rwxr-xr-xdocs/Chapter8/Ansible JSON File Key Value Description.csv12
-rw-r--r--docs/Chapter8/Ansible-JSON-Key-Value-Description.rst138
-rw-r--r--docs/Chapter8/Ansible-Playbook-Examples.rst822
-rw-r--r--docs/data/needs.json670
5 files changed, 1543 insertions, 793 deletions
diff --git a/docs/Chapter7/Configuration-Management.rst b/docs/Chapter7/Configuration-Management.rst
index c82b07d..2d8ce46 100755
--- a/docs/Chapter7/Configuration-Management.rst
+++ b/docs/Chapter7/Configuration-Management.rst
@@ -16,118 +16,130 @@
Configuration Management
------------------------
-Controller Interactions With VNF
+Controller Interactions With xNF
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-ONAP Controllers (such as APPC) expose a northbound API to clients
-(such as SO) in order for the clients to initiate an activity
-(aka command) on a VNF. ONAP controllers interact with VNFs through
-Network and Application Adapters to perform configuration and other
-lifecycle management activities within NFV environment.
-The standardized models, protocols and mechanisms by which network
-functions are configured are equally applicable to VNFs and PNFs.
+APPC/SDN-C expose a northbound API to clients (such as SO) in order for
+the clients to initiate an activity (aka command) on a xNF. APPC/SDN-C
+interact with xNFs through Network and Application Adapters to perform
+configuration and other lifecycle management activities within NFV environment.
+The standardized models, protocols and mechanisms by which network functions
+are configured are equally applicable to VNFs and PNFs.
This section describes the list of commands that should be supported
-by the VNF. The following sections describe the standard protocols
+by the xNF. The following sections describe the standard protocols
that are supported (NETCONF, Chef, Ansible, and REST).
-The commands below are expected to be supported on all VNF's, unless
+The commands below are expected to be supported on all xNF's, unless
noted otherwise, either directly (via the NETCONF or REST interface)
-or indirectly (via a Chef Cookbook or Ansible server). Note that there
-are additional commands offered to northbound clients that are not shown
-below, as these commands either act internally on the Controller itself
-or depend upon network cloud components for implementation (thus, these
-actions do not put any special requirement on the VNF provider).
-
-The commands allow for parametric data to be passed from the controller
-to the VNF or Ansible/Chef server in the request. The format of the
+or indirectly (via a Chef Cookbook or Ansible server).
+
+**Note that there are additional commands offered to northbound clients that
+are not shown below, as these commands either act internally on APPC/SDN-C
+itself or depend upon network cloud components for implementation (thus, these
+actions do not put any special requirement on the xNF provider).**
+
+The commands allow for parametric data to be passed from APPC/SDN-C
+to the xNF or Ansible/Chef server in the request. The format of the
parameter data can be either xml (for NETCONF) or JSON (for Ansible,
Chef, or REST).
Configuration Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-``Configure``: The Controller client is requesting that a post-instantiation
-configuration be applied to the target VNF instance. After the Configure
-action is completed, the VNF instance should be ready for service.
+``Configure``: The APPC/SDN-C client is requesting that a post-instantiation
+configuration be applied to the target xNF. After the Configure
+action is completed, the xNF instance should be ready for service.
Note that customer specific configurations may need to be applied using
-the ConfigModify action.
+the ConfigModify action. This command requires exclusive access rights of
+the xNF.
-``ConfigModify``: The Controller client is requesting a configuration
-update to a subset of the total configuration parameters of a VNF or to
+``ConfigModify``: The APPC client is requesting a configuration
+update to a subset of the total configuration parameters of an xNF or to
apply customer specific configurations. The configuration update is
-typically done while the VNF is in service and should not disrupt traffic.
+typically done while the xNF is in service and should not disrupt traffic.
+This command requires exclusive access rights of the xNF.
-``ConfigBackup``: The Controller client is requesting a backup of the
-configuration parameters where the parameters are stored on the VNF.
+``ConfigBackup``: The APPC client is requesting a backup of the
+configuration parameters where the parameters are stored on the xNF.
This command is typically requested as part of an orchestration flow
for scenarios such as a software upgrade. The ConfigBackup is typically
-done while the VNF is not in service (i.e., in a maintenance state).
-When the ConfigBackup command is executed, the current VNF configuration
+done while the xNF is not in service (i.e., in a maintenance state).
+When the ConfigBackup command is executed, the current xNF configuration
parameters are saved in storage that is preserved (if there is an existing
-set of backed up parameters, they are overwritten).
+set of backed up parameters, they are overwritten). This command requires
+exclusive access rights of the xNF.
-``ConfigRestore``: The Controller client is requesting a restore action of
-the configuration parameters to the VNF that were saved by ConfigBackup
+``ConfigRestore``: The APPC client is requesting a restore action of
+the configuration parameters to the xNF that were saved by ConfigBackup
command. This command is typically requested as part of an orchestration
flow for scenarios such as a software upgrade where the software upgrade
-may have failed and the VNF needs to be rolled back to the prior configuration.
-When the ConfigRestore command is executed, the VNF configuration parameters
-which were backed to persistent preserved storage are applied to the VNF
+may have failed and the xNF needs to be rolled back to the prior configuration.
+When the ConfigRestore command is executed, the xNF configuration parameters
+which were backed to persistent preserved storage are applied to the xNF
(replacing existing parameters). The ConfigRestore is typically done while
-the VNF is not in service (i.e., in a maintenance state).
+the xNF is not in service (i.e., in a maintenance state). This command
+requires exclusive access rights of the xNF.
-``ConfigScaleOut``: The Controller client is requesting that a configuration
+``ConfigScaleOut``: The APPC/SDN-C client is requesting that a configuration
be applied after the VNF instance has been scaled out (i.e., one or more
additional VM's instantiated to increase capacity). For some VNF's,
ConfigScaleOut is not needed because the VNF is auto-configured after
-scale-out. This command is being introduced in the Beijing release.
-
-``Audit``: The Controller client is requesting that the current (last known
-configuration update) is audited against the running configuration on the VNF.
+scale-out. This command is being introduced in the Beijing release to support
+manual Scale Out and will be extended to support Auto ScaleOut in Casablanca
+release. This command requires exclusive access rights of the VNF.
+``Audit``: The APPC client is requesting that the current (last known
+configuration update) is audited against the running configuration on the VNF
+(Openstack).
.. req::
:id: R-20741
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``Configure`` command.
+ The xNF **MUST** support APPC/SDN-C ``Configure`` command.
.. req::
:id: R-19366
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``ConfigModify`` command.
+ The xNF **MUST** support APPC ``ConfigModify`` command.
.. req::
:id: R-32981
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``ConfigBackup`` command.
+ The xNF **MUST** support APPC ``ConfigBackup`` command.
.. req::
:id: R-48247
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``ConfigRestore`` command.
+ The xNF **MUST** support APPC ``ConfigRestore`` command.
.. req::
:id: R-94084
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``ConfigScaleOut`` command.
+ The xNF **MUST** support APPC/SDN-C ``ConfigScaleOut`` command.
.. req::
:id: R-56385
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``Audit`` command.
+ The xNF **MUST** support APPC ``Audit`` command.
Lifecycle Management Related Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -137,162 +149,199 @@ flows where the VNF may need to be removed for service.**
Full details on the APIs can be found in the :doc:`APPC LCM API Guide <../../../appc.git/docs/APPC LCM API Guide/APPC LCM API Guide>`
-``QuiesceTraffic``: The Controller client is requesting the VNF gracefully
+``DistributeTraffic`` The APPC/SDN-C client is requesting a change to
+traffic distribution (redistribution) done by a traffic balancing/distribution
+entity (aka anchor point) or mechanism. This action targets the traffic
+balancing/distribution entity, in some cases DNS, other cases a load balancer
+external to the VNF instance, as examples. Traffic distribution (weight)
+changes intended to take a VNF instance out of service are completed only
+when all in-flight traffic/transactions have been completed. To complete
+the traffic redistribution process, gracefully taking a VNF instance
+out-of-service, without dropping in-flight calls or sessions, QuiesceTraffic
+command may need to follow traffic distribution changes (assigning weight 0
+or very low weight to VNF instance). The VNF application remains in an active
+state.
+
+``QuiesceTraffic`` The APPC/SDN-C client is requesting the xNF gracefully
stop traffic (aka block and drain traffic). The method for quiescing traffic
-is specific to the VNF architecture. The action is completed when all
-(in-flight transactions) traffic has stopped. The VNF remains in an active
-state where the VNF is able to process traffic (initiated using the
-StartTraffic action).
+is specific to the xNF architecture. The action is completed when all
+(in-flight transactions) traffic has stopped. The xNF remains in an active
+state where the xNF is able to process traffic (initiated using the
+ResumeTraffic action).
-``ResumeTraffic``: The Controller client is requesting the VNF resume
-processing traffic. The method to resume traffic is specific to the VNF
+``ResumeTraffic``: The APPC/SDN-C client is requesting the xNF resume
+processing traffic. The method to resume traffic is specific to the xNF
architecture.
-``StopApplication``: The Controller client is requesting that the application
-running on the VNF is stopped gracefully (i.e., without traffic loss).
+``StopApplication``: The APPC client is requesting that the application
+running on the xNF is stopped gracefully (i.e., without traffic loss).
This is equivalent to quiescing the traffic and then stopping the application
processes. The processes can be restarted using the StartApplication command.
-``StartApplication``: The Controller client is requesting that the application
-running on the VNF is started. Get ready to process traffic.
+``StartApplication``: The APPC client is requesting that the application
+running on the xNF is started. Get ready to process traffic. Traffic processing
+can be resumed using the ResumeTraffic command.
**The following commands are needed to support software upgrades, in-place or
-other type of software upgrade. The VNF instance may be removed from service
+other type of software upgrade. The xNF instance may be removed from service
for the upgrade.**
-``UpgradePrecheck``: The Controller client is requesting a confirmation that
-the VNF can (and needs to) be upgraded to a specific software version
-(specified in the request).
+``UpgradePrecheck``: The APPC/SDN-C client is requesting a confirmation that
+the xNF can (and needs to) be upgraded to a specific software version
+(specified in the request). Checking software installed and running on
+the xNF matches software version, intended to be upgraded, is one of the
+recommended checks.
-``UpgradeSoftware``: The Controller client is requesting that a (in-place)
-software upgrade be performed on the VNF. The software to be applied is
+``UpgradeSoftware``: The APPC/SDN-C client is requesting that a (in-place)
+software upgrade be performed on the xNF. The software to be applied is
pre-loaded to a specified location.
-``UpgradePostCheck``: The Controller client is requesting a confirmation that
-the VNF software upgrade has been completed successfully (VNF upgraded to
-the new software version).
+``UpgradePostCheck``: The APPC/SDN-C client is requesting a confirmation that
+the xNF software upgrade has been completed successfully (xNF upgraded to
+the new software version). Checking software installed and running on the xNF
+matches software version, of the newly upgraded software, is one of the
+recommended checks.
-``UpgradeBackup``: The Controller client is requesting that the VNF is backed
+``UpgradeBackup``: The APPC/SDN-C client is requesting that the xNF is backed
up prior to the UpgradeSoftware.
-``UpgradeBackOut``: The Controller client is requesting that the VNF upgrade
+``UpgradeBackOut``: The APPC/SDN-C client is requesting that the xNF upgrade
is backed out (in the event that the SoftwareUpgrade or UpgradePostCheck
failed).
+.. req::
+ :id: R-328086
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST**, if serving as a distribution point or anchor point for
+ steering point from source to destination, support the ONAP Controller's
+ ``DistributeTraffic`` command.
.. req::
:id: R-12706
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``QuiesceTraffic`` command.
+ The xNF **MUST** support APPC/SDN-C ``QuiesceTraffic`` command.
.. req::
:id: R-07251
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``ResumeTraffic`` command.
+ The xNF **MUST** support APPC/SDN-C ``ResumeTraffic`` command.
.. req::
:id: R-83146
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``StopApplication`` command.
+ The xNF **MUST** support APPC ``StopApplication`` command.
.. req::
:id: R-82811
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``StartApplication`` command.
+ The xNF **MUST** support APPC ``StartApplication`` command.
.. req::
:id: R-19922
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``UpgradePrecheck`` command.
+ The xNF **MUST** support APPC/SDN-C ``UpgradePrecheck`` command.
.. req::
:id: R-49466
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``UpgradeSoftware`` command.
+ The xNF **MUST** support APPC/SDN-C ``UpgradeSoftware`` command.
.. req::
:id: R-45856
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``UpgradePostCheck`` command.
+ The xNF **MUST** support APPC/SDN-C ``UpgradePostCheck`` command.
.. req::
:id: R-97343
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``UpgradeBackup`` command.
+ The xNF **MUST** support APPC/SDN-C ``UpgradeBackup`` command.
.. req::
:id: R-65641
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``UpgradeBackOut`` command.
-
-.. req::
- :id: R-328086
- :target: XNF
- :keyword: MUST
- :introduced: casablanca
-
- The xNF **MUST**, if serving as a distribution point or anchor point for steering point
- from source to destination, support the ONAP Controller's
- ``DistributeTraffic`` command.
+ The xNF **MUST** support APPC/SDN-C ``UpgradeBackOut`` command.
HealthCheck and Failure Related Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-``HealthCheck``: The Controller client is requesting a health check over the
-entire scope of the VNF. The VNF must be 100% healthy, ready to take requests
-and provide services, with all VNF required capabilities ready to provide
+``HealthCheck`` The APPC/SDN-C client is requesting a health check over the
+entire scope of the xNF. The xNF must be 100% healthy, ready to take requests
+and provide services, with all xNF required capabilities ready to provide
services and with all active and standby resources fully ready with no open
-MINOR, MAJOR or CRITICAL alarms.
-
-Note: In addition to the commands above, the Controller supports a set of
+MINOR, MAJOR or CRITICAL alarms. This is expected to be the default in the
+event that no parameter is passed to the Healthcheck playbook, cookbook, etc.
+
+Some xNFs may support and desire to run partial healthchecks and receive a
+successful response when partial health check completes without errors.
+The parameter name used by HealthCheck playbook to request non-default
+partial health check is healthcheck_type. Example of health check types
+could be healthcheck_type=GuestOS, healthcheck_type=noDB,
+healthcheck_type=noConnections, healthcheck_type=IgnoreAlarms, etc..
+This attribute-value pair may be passed by the Orchestrator or Workflow
+or other (northbound) APPC/SDN-C clients to the APPC/SDN-C as part of the
+request.
+
+**Note**: In addition to the commands above, the APPC/SDN-C supports a set of
Openstack failure recovery related commands that are executed on-demand or via
-Control Loop at the VM level. The VNF must support these commands in a fully
+Control Loop at the VM level. The VNF must support these commands in a fully
automated fashion.
-
.. req::
:id: R-41430
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support ONAP Controller's ``HealthCheck`` command.
+ The xNF **MUST** support APPC/SDN-C ``HealthCheck`` command.
-Notes On Command Support Using Controller Southbound Protocols
+Notes On Command Support Using APPC/SDN-C Southbound Protocols
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The ONAP Controllers are designed to support a standard set of protocols in
-order to communicate with the VNF instance. The supported protocols are
+APPC/SDN-C are designed to support a standard set of protocols in
+order to communicate with the xNF instance. The supported protocols are
NETCONF, Ansible, Chef, and REST.
-NETCONF and REST require the VNF to implement a server which supports the RPC
+NETCONF and REST require the xNF to implement a server which supports the RPC
or REST calls.
Ansible and Chef require the use of a Ansible or Chef server which communicates
-with the Controller (northbound) and the VNF VM's (southbound).
+with the APPC/SDN-C (northbound) and the xNF VM's (southbound).
The vendor must select which protocol to support for the commands listed above.
Notes:
-* NETCONF is most suitable for configuration related commands
+* NETCONF is most suitable for configuration related commands.
* Ansible and Chef are suitable for any command.
Ansible has the advantage that it is agentless.
@@ -308,13 +357,13 @@ the `ONAP SDNC project <https://onap.readthedocs.io/en/latest/submodules/sdnc/oa
NETCONF Standards and Capabilities
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-ONAP Controllers and their Adapters utilize device YANG model and
-NETCONF APIs to make the required changes in the VNF state and
-configuration. The VNF providers must provide the Device YANG model and
+APPC/SDN-C and their Adapters utilize device YANG model and
+NETCONF APIs to make the required changes in the xNF state and
+configuration. The xNF providers must provide the Device YANG model and
NETCONF server supporting NETCONF APIs to comply with target ONAP and
industry standards.
-VNF Configuration via NETCONF Requirements
+xNF Configuration via NETCONF Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Configuration Management
@@ -357,7 +406,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **close-session()**- Gracefully close the current session.
+ ``close-session()`` - Gracefully close the current session.
.. req::
:id: R-70496
@@ -365,7 +414,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **commit(confirmed, confirm-timeout)** - Commit candidate
+ ``commit(confirmed, confirm-timeout)`` - Commit candidate
configuration data store to the running configuration.
.. req::
@@ -374,8 +423,8 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **discard-changes()** - Revert the candidate configuration
- datastore to the running configuration.
+ ``discard-changes()`` - Revert the candidate configuration
+ data store to the running configuration.
.. req::
:id: R-44281
@@ -383,8 +432,8 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **edit-config(target, default-operation, test-option, error-option,
- config)** - Edit the target configuration datastore by merging,
+ ``edit-config(target, default-operation, test-option, error-option,
+ config)`` - Edit the target configuration data store by merging,
replacing, creating, or deleting new config elements.
.. req::
@@ -393,7 +442,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **get(filter)** - Retrieve (a filtered subset of) the running
+ ``get(filter)`` - Retrieve (a filtered subset of) the running
configuration and device state information. This should include
the list of xNF supported schemas.
@@ -403,7 +452,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- **get-config(source, filter)** - Retrieve a (filtered subset of
+ ``get-config(source, filter`` - Retrieve a (filtered subset of
a) configuration from the configuration data store source.
.. req::
@@ -412,7 +461,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- ``kill-session(session)`` - Force the termination of **session**.
+ ``kill-session(session``- Force the termination of **session**.
.. req::
:id: R-02597
@@ -420,7 +469,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- ``lock(target)`` - Lock the configuration datastore target.
+ ``lock(target)`` - Lock the configuration data store target.
.. req::
:id: R-96554
@@ -428,7 +477,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement the protocol operation:
- ``unlock(target)`` - Unlock the configuration datastore target.
+ ``unlock(target)`` - Unlock the configuration data store target.
.. req::
:id: R-29324
@@ -436,7 +485,7 @@ NETCONF Server Requirements
:keyword: SHOULD
The xNF **SHOULD** implement the protocol operation:
- ``copy-config(target, source) -`` Copy the content of the
+ ``copy-config(target, source)`` - Copy the content of the
configuration data store source to the configuration data store target.
.. req::
@@ -445,7 +494,7 @@ NETCONF Server Requirements
:keyword: SHOULD
The xNF **SHOULD** implement the protocol operation:
- ``delete-config(target) -`` Delete the named configuration
+ ``delete-config(target)`` - Delete the named configuration
data store target.
.. req::
@@ -454,7 +503,7 @@ NETCONF Server Requirements
:keyword: SHOULD
The xNF **SHOULD** implement the protocol operation:
- ``get-schema(identifier, version, format) -`` Retrieve the YANG schema.
+ ``get-schema(identifier, version, format)`` - Retrieve the YANG schema.
.. req::
:id: R-62468
@@ -523,7 +572,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** implement both ``:candidate`` and
- ``:writable-running`` capabilities. When both **:candidate** and
+ ``:writable-running`` capabilities. When both ``:candidate`` and
``:writable-running`` are provided then two locks should be supported.
.. req::
@@ -663,7 +712,7 @@ NETCONF Server Requirements
:keyword: MUST
The xNF **MUST** release locks to prevent permanent lock-outs
- when the corresponding ```<partial-unlock>`` operation succeeds.
+ when the corresponding <partial-unlock> operation succeeds.
.. req::
:id: R-63935
@@ -689,7 +738,7 @@ NETCONF Server Requirements
:target: XNF
:keyword: MUST
- The xNF **MUST** support simultaneous ``<commit>`` operations
+ The xNF **MUST** support simultaneous <commit> operations
within the context of this locking requirements framework.
.. req::
@@ -892,10 +941,7 @@ NETCONF RFCs.
The xNF **MUST** conform to the NETCONF RFC 6242,
"Using the Network Configuration Protocol over Secure Shell".
-
-.. _vnf_rest_apis:
-
-VNF REST APIs
+xNF REST APIs
^^^^^^^^^^^^^^^
HealthCheck is a command for which no NETCONF support exists.
@@ -904,25 +950,18 @@ Therefore, this must be supported using a RESTful interface
(defined in sections `Chef Standards and Capabilities`_ and
`Ansible Standards and Capabilities`_).
-HealthCheck Definition: The VNF level HealthCheck is a check over
-the entire scope of the VNF. The VNF must be 100% healthy, ready
-to take requests and provide services, with all VNF required
-capabilities ready to provide services and with all active and
-standby resources fully ready with no open MINOR, MAJOR or CRITICAL
-alarms. NOTE: A switch may need to be turned on, but the VNF should
-be ready to take service requests or be already processing service
-requests successfully.
+See section 7.3.1.4 for the definition of Full Healthcheck and Partial
+Healthchecks.
-The VNF must provide a REST formatted GET RPCs to support HealthCheck
+The xNF must provide a REST formatted GET RPCs to support HealthCheck
queries via the GET method over HTTP(s).
The port number, url, and other authentication information is provided
-by the VNF provider.
+by the xNF provider.
REST APIs
~~~~~~~~~
-
.. req::
:id: R-31809
:target: XNF
@@ -966,23 +1005,23 @@ or unhealthy response:
Chef Standards and Capabilities
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-ONAP will support configuration of VNFs via Chef subject to the
+ONAP will support configuration of xNFs via Chef subject to the
requirements and guidelines defined in this section.
The Chef configuration management mechanism follows a client-server
-model. It requires the presence of a Chef-Client on the VNF that will be
+model. It requires the presence of a Chef-Client on the xNF that will be
directly managed by a Chef Server. The Chef-client will register with
the appropriate Chef Server and are managed via 'cookbooks' and
configuration attributes loaded on the Chef Server which contain all
-necessary information to execute the appropriate actions on the VNF via
+necessary information to execute the appropriate actions on the xNF via
the Chef-client.
ONAP will utilize the open source Chef Server, invoke the documented
-Chef REST APIs to manage the VNF and requires the use of open source
-Chef-Client and Push Jobs Client on the VNF
+Chef REST APIs to manage the xNF and requires the use of open source
+Chef-Client and Push Jobs Client on the xNF
(https://downloads.chef.io/).
-VNF Configuration via Chef Requirements
+xNF Configuration via Chef Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chef Client Requirements
@@ -1027,7 +1066,6 @@ Chef Client Requirements
Chef Roles/Requirements
++++++++++++++++++++++++++
-
.. req::
:id: R-27310
:target: XNF
@@ -1045,7 +1083,7 @@ Chef Roles/Requirements
The xNF Package **MUST** include a run list of
roles/cookbooks/recipes, for each supported xNF action, that will
perform the desired xNF action in its entirety as specified by ONAP
- (see Section 7.c, ONAP Controller APIs and Behavior, for list of xNF
+ (see Section 7.c, APPC/SDN-C APIs and Behavior, for list of xNF
actions and requirements), when triggered by a chef-client run list
in JSON file.
@@ -1139,11 +1177,11 @@ ONAP Chef API Usage
~~~~~~~~~~~~~~~~~~~
This section outlines the workflow that ONAP invokes when it receives an
-action request against a Chef managed VNF.
+action request against a Chef managed xNF.
-1. When ONAP receives a request for an action for a Chef Managed VNF, it
+1. When ONAP receives a request for an action for a Chef Managed xNF, it
retrieves the corresponding template (based on **action** and
- **VNF**) from its database and sets necessary values in the
+ **xNF**) from its database and sets necessary values in the
"Environment", "Node" and "NodeList" keys (if present) from either
the payload of the received action or internal data.
@@ -1162,7 +1200,7 @@ action request against a Chef managed VNF.
4. If PushJobFlag is set to "True" in the template, ONAP requests a push
job against all the nodes in the NodeList to trigger
- chef-client\ **.** It will not invoke any other command via the push
+ chef-client. It will not invoke any other command via the push
job. ONAP will include a callback URL in the push job request and a
unique Request Id. An example push job posted by ONAP is listed
below:
@@ -1171,8 +1209,8 @@ action request against a Chef managed VNF.
{
"command": "chef-client"
- "run\_timeout": 300
- "nodes": ["node1.vnf\_a.onap.com", "node2.vnf\_a.onap.com"]
+ "run_timeout": 300
+ "nodes": ["node1.vnf_a.onap.com", "node2.vnf_a.onap.com"]
"env": {
"RequestId":"8279-abcd-aksdj-19231"
"CallbackUrl":"<callback>"
@@ -1192,18 +1230,18 @@ action request against a Chef managed VNF.
Ansible Standards and Capabilities
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-ONAP will support configuration of VNFs via Ansible subject to the
+ONAP will support configuration of xNFs via Ansible subject to the
requirements and guidelines defined in this section.
-Ansible allows agentless management of VNFs/VMs/VNFCs via execution
+Ansible allows agentless management of xNFs/VMs/VNFCs via execution
of 'playbooks' over ssh. The 'playbooks' are a structured set of
tasks which contain all the necessary resources and execution capabilities
to take the necessary action on one or more target VMs (and/or VNFCs)
of the VNF. ONAP will utilize the framework of an Ansible Server that
-will host all Ansible artifacts and run playbooks to manage VNFs that support
+will host all Ansible artifacts and run playbooks to manage xNFs that support
Ansible.
-VNF Configuration via Ansible Requirements
+xNF Configuration via Ansible Requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ansible Client Requirements
@@ -1214,11 +1252,13 @@ Ansible Client Requirements
:id: R-32217
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** have routable FQDNs that are reachable via
- the Ansible Server for the endpoints (VMs) of a xNF on which playbooks
- will be executed. ONAP will initiate requests to the Ansible Server
- for invocation of playbooks against these end points [#7.3.3]_.
+ The xNF **MUST** have routable management IP addresses or FQDNs that
+ are reachable via the Ansible Server for the endpoints (VMs) of a
+ xNF that playbooks will target. ONAP will initiate requests to the
+ Ansible Server for invocation of playbooks against these end
+ points [#7.3.3]_.
.. req::
:id: R-54373
@@ -1232,23 +1272,30 @@ Ansible Client Requirements
:id: R-35401
:target: XNF
:keyword: MUST
+ :updated: casablanca
The xNF **MUST** support SSH and allow SSH access by the
- Ansible server for the endpoint VM(s) and comply with the Network
+ Ansible server to the endpoint VM(s) and comply with the Network
Cloud Service Provider guidelines for authentication and access.
.. req::
:id: R-82018
:target: XNF
:keyword: MUST
+ :updated: casablanca
The xNF **MUST** load the Ansible Server SSH public key onto xNF
- VM(s) as part of instantiation. This will allow the Ansible Server
- to authenticate to perform post-instantiation configuration without
- manual intervention and without requiring specific xNF login IDs and
- passwords.
-
- CAUTION: For VNFs configured using Ansible, to eliminate the need
+ VM(s) /root/.ssh/authorized_keys as part of instantiation. Alternative,
+ is for Ansible Server SSH public key to be loaded onto xNF VM(s) under
+ /home/<Mechanized user ID>/.ssh/authorized_keys as part of instantiation,
+ when a Mechanized user ID is created during instantiation, and Configure
+ and all playbooks are designed to use a mechanized user ID only for
+ authentication (never using root authentication during Configure playbook
+ run). This will allow the Ansible Server to authenticate to perform
+ post-instantiation configuration without manual intervention and without
+ requiring specific xNF login IDs and passwords.
+
+ *CAUTION*: For xNFs configured using Ansible, to eliminate the need
for manual steps, post-instantiation and pre-configuration, to
upload of SSH public keys, SSH public keys loaded during (heat)
instantiation shall be preserved and not removed by (heat) embedded
@@ -1258,12 +1305,33 @@ Ansible Client Requirements
:id: R-92866
:target: XNF
:keyword: MUST
+ :updated: casablanca
The xNF **MUST** include as part of post-instantiation configuration
done by Ansible Playbooks the removal/update of the SSH public key from
- /root/.ssh/authorized_keys, and update of SSH keys loaded through
- instantiation to support Ansible. This may include download and install of
- new SSH keys and new mechanized IDs.
+ /root/.ssh/authorized_keys, and update of SSH keys loaded through
+ instantiation to support Ansible. This may include creating Mechanized user
+ ID(s) used by the Ansible Server(s) on VNF VM(s) and uploading and
+ installing new SSH keys used by the mechanized use ID(s).
+
+.. req::
+ :id: R-97345
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** permit authentication, using root account, only right
+ after instantiation and until post-instantiation configuration is
+ completed.
+
+.. req::
+ :id: R-97451
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** provide the ability to remove root access once
+ post-instantiation configuration (Configure) is completed.
.. req::
:id: R-91745
@@ -1274,10 +1342,61 @@ Ansible Client Requirements
storing and using the SSH keys for authentication when the SSH
keys used by Ansible are regenerated/updated.
- Note: Ansible Server itself may be used to upload new SSH public
- keys onto supported VNFs.
+ **Note**: Ansible Server itself may be used to upload new SSH public
+ keys onto supported xNFs.
+
+.. req::
+ :id: R-73459
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
-.. _ansible_playbook_requirements:
+ The xNF **MUST** provide the ability to include a "from=" clause in SSH
+ public keys associated with mechanized user IDs created for an Ansible
+ Server cluster to use for xNF VM authentication.
+
+.. req::
+ :id: R-45197
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** define the "from=" clause to provide the list of IP
+ addresses of the Ansible Servers in the Cluster, separated by coma, to
+ restrict use of the SSH key pair to elements that are part of the Ansible
+ Cluster owner of the issued and assigned mechanized user ID.
+
+.. req::
+ :id: R-94567
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** provide Ansible playbooks that are designed to run using
+ an inventory hosts file in a supported format with only IP addresses or
+ IP addresses and VM/xNF names.
+
+.. req::
+ :id: R-67124
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** provide Ansible playbooks that are designed to run using
+ an inventory hosts file in a supported format; with group names matching
+ VNFC 3-character string adding "vip" for groups with virtual IP addresses
+ shared by multiple VMs as seen in examples provided in Appendix.
+
+.. req::
+ :id: R-24482
+ :target: XNF
+ :keyword: MUST
+ :introduced: casablanca
+
+ The xNF **MUST** provide Ansible playbooks that are designed to run using
+ an inventory hosts file in a supported format; with site group that shall
+ be used to add site specific configurations to the target xNF VM(s) as
+ needed.
Ansible Playbook Requirements
+++++++++++++++++++++++++++++++
@@ -1286,6 +1405,13 @@ An Ansible playbook is a collection of tasks that is executed on the
Ansible server (local host) and/or the target VM (s) in order to
complete the desired action.
+.. req::
+ :id: R-49751
+ :target: XNF
+ :keyword: MUST
+
+ The xNF **MUST** support Ansible playbooks that are compatible with
+ Ansible version 2.6 or later.
.. req::
:id: R-40293
@@ -1299,8 +1425,9 @@ complete the desired action.
:id: R-49396
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** support each ONAP (APPC) xNF action
+ The xNF **MUST** support each APPC/SDN-C xNF action
by invocation of **one** playbook [#7.3.4]_. The playbook will be responsible
for executing all necessary tasks (as well as calling other playbooks)
to complete the request.
@@ -1317,15 +1444,22 @@ complete the desired action.
:id: R-48698
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** utilize information from key value pairs
- that will be provided by the Ansible Server as "extra-vars" during
- invocation to execute the desired xNF action. If the playbook requires
- files, they must also be supplied using the methodology detailed in
- the Ansible Server API, unless they are bundled with playbooks, example,
- generic templates.
+ The xNF **MUST** utilize information from key value pairs that will be
+ provided by the Ansible Server as "extra-vars" during invocation to
+ execute the desired xNF action. The "extra-vars" attribute-value pairs
+ are passed to the Ansible Server by an APPC/SDN-C as part of the
+ Rest API request. If the playbook requires files, they must also be
+ supplied using the methodology detailed in the Ansible Server API, unless
+ they are bundled with playbooks, example, generic templates. Any files
+ containing instance specific info (attribute-value pairs), not obtainable
+ from any ONAP inventory databases or other sources, referenced and used an
+ input by playbooks, shall be provisioned (and distributed) in advance of
+ use, e.g., xNF instantiation. Recommendation is to avoid these instance
+ specific, manually created in advance of instantiation, files.
-The Ansible Server will determine if a playbook invoked to execute a
+The Ansible Server will determine if a playbook invoked to execute an
xNF action finished successfully or not using the "PLAY_RECAP" summary
in Ansible log. The playbook will be considered to successfully finish
only if the "PLAY RECAP" section at the end of playbook execution output
@@ -1341,7 +1475,7 @@ will be considered to have failed.
The xNF **MUST** use playbooks designed to allow Ansible
Server to infer failure or success based on the "PLAY_RECAP" capability.
- Note: There are cases where playbooks need to interpret results
+ **Note**: There are cases where playbooks need to interpret results
of a task and then determine success or failure and return result
accordingly (failure for failed tasks).
@@ -1349,57 +1483,61 @@ will be considered to have failed.
:id: R-50252
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** write to a specific one text files that
- will be retrieved and made available by the Ansible Server if, as part
- of a xNF action (e.g., audit), a playbook is required to return any
- xNF information. The text files must be written in the same directory as
- the one from which the playbook is being executed. A text file must be
- created for the xNF playbook run targets/affects, with the name
- '<VNFname>_results.txt' into which any desired output from each
- respective VM/xNF must be written.
+ The xNF **MUST** write to a response file in JSON format that will be
+ retrieved and made available by the Ansible Server if, as part of a xNF
+ action (e.g., audit), a playbook is required to return any xNF
+ information/response. The text files must be written in the main playbook
+ home directory, in JSON format. The JSON file must be created for the xNF
+ with the name '<xNF name>_results.txt'. All playbook output results, for
+ all xNF VMs, to be provided as a response to the request, must be written
+ to this response file.
.. req::
:id: R-51442
:target: XNF
:keyword: SHOULD
+ :updated: casablanca
The xNF **SHOULD** use playbooks that are designed to
automatically 'rollback' to the original state in case of any errors
for actions that change state of the xNF (e.g., configure).
- Note: In case rollback at the playbook level is not supported or
- possible, the xNF provider shall provide alternative locking
- mechanism (e.g., for a small xNF the rollback mechanism may rely
- on workflow to terminate and re-instantiate VNF VMs and then re-run
- playbook(s)). Backing up updated files also recommended to support
- rollback when soft rollback is feasible.
+ **Note**: In case rollback at the playbook level is not supported or
+ possible, the xNF provider shall provide alternative rollback
+ mechanism (e.g., for a small xNF the rollback mechanism may rely
+ on workflow to terminate and re-instantiate VNF VMs and then re-run
+ playbook(s)). Backing up updated files is also recommended to support
+ rollback when soft rollback is feasible.
.. req::
:id: R-58301
:target: XNF
:keyword: SHOULD NOT
+ :updated: casablanca
The xNF **SHOULD NOT** use playbooks that make requests to
Cloud resources e.g. Openstack (nova, neutron, glance, heat, etc.);
therefore, there is no use for Cloud specific variables like Openstack
- UUIDs in Ansible Playbooks.
+ UUIDs in Ansible Playbook related artifacts.
- Rationale: Flows that require interactions with Cloud services e.g.
+ **Rationale**: Flows that require interactions with Cloud services e.g.
Openstack shall rely on workflows run by an Orchestrator
(Change Management) or other capability (such as a control loop or
Operations GUI) outside Ansible Server which can be executed by a
- Controller such as APPC. There are policies, as part of Control Loop
- models, that send remediation action requests to APPC; these are
- triggered as a response to an event or correlated events published
+ APPC/SDN-C. There are policies, as part of Control Loop
+ models, that send remediation action requests to an APPC/SDN-C; these
+ are triggered as a response to an event or correlated events published
to Event Bus.
.. req::
:id: R-02651
:target: XNF
:keyword: SHOULD
+ :updated: casablanca
- The xNF **SHOULD** use the Ansible backup feature to save a
+ The xNF **SHOULD** use available backup capabilities to save a
copy of configuration files before implementing changes to support
operations such as backing out of software upgrades, configuration
changes or other work as this will help backing out of configuration
@@ -1409,41 +1547,44 @@ will be considered to have failed.
:id: R-43353
:target: XNF
:keyword: MUST
+ :updated: casablanca
- The xNF **MUST** return control from Ansible Playbooks only
- after tasks are fully complete, signaling that the playbook completed
- all tasks. When starting services, return control only after all services
- are up. This is critical for workflows where the next steps are dependent
- on prior tasks being fully completed.
+ The xNF **MUST** return control from Ansible Playbooks only after all
+ tasks performed by playbook are fully complete, signaling that the
+ playbook completed all tasks. When starting services, return control
+ only after all services are up. This is critical for workflows where
+ the next steps are dependent on prior tasks being fully completed.
Detailed examples:
-StopApplication Playbook – StopApplication Playbook shall return control
-and a completion status only after VNF application is fully stopped, all
-processes/services stopped.
-StartApplication Playbook – StartApplication Playbook shall return control
-and a completion status only after all VNF application services are fully up,
-all processes/services started and ready to provide services. NOTE: Start
-Playbook should not be declared complete/done after starting one or several
-processes that start the other processes.
+``StopApplication Playbook`` – StopApplication Playbook shall return control
+and a completion status response only after xNF application is fully stopped,
+all processes/services stopped.
+
+``StartApplication Playbook`` – StartApplication Playbook shall return control
+and a completion status only after all xNF application services are fully up,
+all processes/services started and ready to provide services.
+
+**NOTE**: Start Playbook should not be declared complete/done after starting
+one or several processes that start the other processes.
HealthCheck Playbook:
SUCCESS – HealthCheck success shall be returned (return code 0) by a
-Playbook or Cookbook only when VNF is 100% healthy, ready to take requests
-and provide services, with all VNF required capabilities ready to provide
+Playbook or Cookbook only when xNF is 100% healthy, ready to take requests
+and provide services, with all xNF required capabilities ready to provide
services and with all active and standby resources fully ready with no
open MINOR, MAJOR or CRITICAL alarms.
-NOTE: In some cases, a switch may need to be turned on, but a VNF
+NOTE: In some cases, a switch may need to be turned on, but a xNF
reported as healthy, should be ready to take service requests or be
already processing service requests successfully.
-A successful execution of a health-check playbook shall also create one
-file per VNF VM, named after the VNF instance name followed by
-"_results.txt (<vnf_instance>_results.txt) to indicate health-check was
-executed and completed successfully, example: vfdb9904v_results.txt,
-with the following contents:
+A successful execution of a health-check playbook shall create one response
+file (per xNF) in JSON format, named after the xNF instance, followed by
+"_results.txt" (<xNF instance name>_results.txt) to be provided as a response
+to the requestor, indicating health-check was executed and completed
+successfully, example: vfdb9904v_results.txt, with the following contents:
.. code-block:: java
@@ -1463,20 +1604,22 @@ Example:
"state": "healthy",
"time": "2018-03-16:1139"
}
-..
+
+
+**NOTE**: See section 7.3.1.4 for comments on support of partial health checks.
FAILURE – A health check playbook shall return a non-zero return code in
-case VNF is not 100% healthy because one or more VNF application processes
+case xNF is not 100% healthy because one or more xNF application processes
are stopped or not ready to take service requests or because critical or
non-critical resources are not ready or because there are open MINOR, MAJOR
-or CRITICAL traps/alarms or because there are issues with the VNF that
-need attention even if they do not impact services provided by the VNF.
-
-A failed health-check playbook shall also create one file per VNF,
-named after the VNF instance name, followed by
-"_results.txt to indicate health-check was executed and found issues
-in the health of the VNF. This is to differentiate from failure to
-run health-check playbook or playbook tasks to verify the health of the VNF,
+or CRITICAL traps/alarms or because there are issues with the xNF that
+need attention even if they do not impact services provided by the xNF.
+
+A failed health-check playbook shall also create one file (per xNF), in
+JSON format, named after the xNF instance name, followed by "_results.txt"
+to indicate health-check was executed and found issues in the health of
+the xNF. This is to differentiate from failure to run health-check playbook
+or playbook tasks to verify the health of the xNF,
example: vfdb9904v_results.txt, with the following contents:
.. code-block:: java
@@ -1492,7 +1635,7 @@ example: vfdb9904v_results.txt, with the following contents:
],
"time": "2018-03-16:4044"
}
-..
+
Example:
@@ -1510,54 +1653,87 @@ Example:
],
"time": "2018-03-16:4044"
}
-..
-See `VNF REST APIs`_ for additional details on HealthCheck.
+See `xNF REST APIs`_ for additional details on HealthCheck.
+
+Some xNFs may support and desire to run partial health checks and receive
+a successful response when partial health check completes without errors.
+The parameter name used by HealthCheck playbook to request non-default
+partial health check is healthcheck_type. Example of health check types
+could be healthcheck_type=GuestOS, healthcheck_type=noDB,
+healthcheck_type=noConnections, healthcheck_type=IgnoreAlarms, etc.. This
+attribute-value pair may be passed by Orchestrator or Workflow or other
+(northbound) APPC/SDN-C clients to APPC/SDN-C as part of the request.
+
+By default, when no argument/parameter is passed, healthcheck playbook
+performs a full xNF health check.
+
+.. req::
+ :id: R-24189
+ :target: XNF
+ :keyword: SHOULD
+ :updated: casablanca
+
+ The xNF provider **MUST** deliver a new set of playbooks that includes
+ all updated and unchanged playbooks for any new revision to an existing
+ set of playbooks.
+
+.. req::
+ :id: R-49911
+ :target: XNF
+ :keyword: SHOULD
+ :updated: casablanca
+
+ The xNF provider **MUST** assign a new point release to the updated
+ playbook set. The functionality of a new playbook set must be tested before
+ it is deployed to the production.
-ONAP Controller / Ansible API Usage
+Ansible API Usage
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This section outlines the workflow that ONAP Controller invokes when
-it receives an action request against an Ansible managed VNF.
+This section outlines the workflow that APPC/SDN-C invokes when
+it receives an action request against an Ansible managed xNF.
- #. When ONAP Controller receives a request for an action for an
- AnsibleManaged VNF, it retrieves the corresponding template (based
- on **action** and **VNF**) from its database and sets necessary
+ #. When APPC/SDN-C receives a request for an action for an
+ Ansible managed xNF, it retrieves the corresponding template (based
+ on **action** and **xNF Type**) from its database and sets necessary
values (such as an Id, NodeList, and EnvParameters) from either
- information in the request or data obtained from other sources.
+ information either in the request or data obtained from other sources,
+ inventory database, is an example of such sources.
This is referred to as the payload that is sent as a JSON object
- to the Ansible server.
- #. The ONAP Controller sends a request to the Ansible server to
+ to the Ansible server as part of the Rest API request.
+ #. The APPC/SDN-C sends a request to the Ansible server to
execute the action.
- #. The ONAP Controller polls the Ansible Server for result (success
- or failure). The ONAP Controllers has a timeout value which is
- contained in the template. If the result is not available when the
- timeout is reached, the ONAP Controller stops polling and returns a
- timeout error to the requester. The Ansible Server continues to
- process the request.
+ #. The APPC/SDN-C, after sending a request to the Ansible server,
+ polls it to get results(success or failure). The APPC/SDN-C has a
+ timeout value which is contained in the action request template. Different
+ actions can set different timeout values (default setting is 600 seconds).
+ If the result is not available when the timeout is reached, the APPC/SDN-C
+ stops polling and returns a timeout error to the requester.
+ The Ansible Server continues to process the request.
-Support of Controller Commands And Southbound Protocols
+Support of APPC/SDN-C Commands And Southbound Protocols
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following table summarizes the commands and possible protocols selected.
Note that the HealthCheck can also be supported via REST.
-Table 8. ONAP Controller APIs and NETCONF Commands
+Table 8. APPC/SDN-C APIs and NETCONF Commands
+-------------+--------------------+--------------------+--------------------+
|**Command** |**NETCONF Support** |**Chef Support** |**Ansible** |
+=============+====================+====================+====================+
-|General |For each RPC, the |VNF Vendor must |VNF Vendor must |
+|General |For each RPC, the |xNF Vendor must |VNF Vendor must |
|Comments |appropriate RPC |provide any |provide an Ansible |
| |operation is listed.|necessary roles, |playbook to retrieve|
| | |cookbooks, recipes |the running |
| | |to retrieve the |configuration from a|
| | |running |VNF and place the |
| | |configuration from |output on the |
-| | |a VNF and place it |Ansible server in |
+| | |a xNF and place it |Ansible server in |
| | |in the respective |a manner aligned |
| | |Node Objects |with playbook |
| | |'PushJobOutput' |requirements listed |
@@ -1568,7 +1744,7 @@ Table 8. ONAP Controller APIs and NETCONF Commands
| | |run. |in the JSON file. |
| | | | |
| | |The JSON file for |NodeList must list |
-| | |this VNF action is |IP addresses or DNS |
+| | |this xNF action is |IP addresses or DNS |
| | |required to set |supported FQDNs of |
| | |"PushJobFlag" to |an example VNF |
| | |"True" and |on which to |
@@ -1602,7 +1778,7 @@ Table 8. ONAP Controller APIs and NETCONF Commands
+-------------+--------------------+--------------------+--------------------+
|Configure, |The <edit-config> |Supported via a |Supported via a |
|ModifyConfig |operation loads all |cookbook that |playbook that |
-| |or part of a |updates the VNF |updates the VNF |
+| |or part of a |updates the xNF |updates the VNF |
| |specified data set |configuration. |configuration. |
| |to the specified | | |
| |target database. If | | |
@@ -1640,7 +1816,7 @@ Table 8. ONAP Controller APIs and NETCONF Commands
.. [#7.3.2]
Recall that the Node Object **is required** to be identical across
- all VMs of a VNF invoked as part of the action except for the "name".
+ all VMs of a xNF invoked as part of the action except for the "name".
.. [#7.3.3]
Upstream elements must provide the appropriate FQDN in the request to
diff --git a/docs/Chapter8/Ansible JSON File Key Value Description.csv b/docs/Chapter8/Ansible JSON File Key Value Description.csv
new file mode 100755
index 0000000..7d91916
--- /dev/null
+++ b/docs/Chapter8/Ansible JSON File Key Value Description.csv
@@ -0,0 +1,12 @@
+Field Name,Description,Type,Comment
+PlaybookName,xNF provider must list name of the playbook relative path used to execute the xNF action.,Mandatory,"Currently following Ansible standard naming, where main playbook is always named site.yml, and directory name where this main playbook resides, is named after the command/action playbook performs, in lower case, example, configure."
+Action,Name of xNF action.,Optional,
+EnvParameters,A JSON dictionary which should list key attribute-value pairs to be passed to the Ansible playbook. These values usually are instance specific parameters that a playbook needs to execute an action targeting the xNF instance.,Optional,"Attribute-value pairs vary from xNF action-to-action. Targeted xNF instance name is commonly a required attribute.
+
+Attribute names (variable names) passed to Ansible shall follow Ansible valid variable names: ""Variable names should be letters, numbers, and underscores. Variables should always start with a letter."""
+NodeList,"xNF inventory xNFC names with respective IP/VIP addresses, in xNFC groups, xNF instance local/site name, and other info required to build inventory hosts file playbook must be executed against.",Optional,"If NodeList is not provided, inventory hosts file must be pre-loaded (xNF) in the Ansible Server in advance of request targeting instance otherwise request fails with inventory hosts file not found."
+FileParameters,A JSON dictionary where keys are filenames and values are contents of files. The Ansible Server will utilize this feature to generate files with keys as filenames and values as content. This attribute can be used to generate files that a playbook may require as part of execution.,Optional,Depends on the xNF action and playbook design.
+Timeout,"Time (in seconds) that a playbook is expected to take to finish execution for the xNF. If playbook execution time exceeds this value, Ansible Server will terminate the playbook process.",Optional,
+InventoryNames,"Default ""None"", no names, inventory hosts file contains no names, just (OA&M) IP addresses. When set to ""VM"" or ""VNFC"" Ansible Server Rest API adds VM names or VNFC names, respectively, to the inventory hosts file besides IP addresses (or FQDNs). Names and IP addresses are provided by APPC/SDN-C in xNF NodeList.",Optional,"This parameter is used by Ansible Server Rest API to build inventory hosts file matching what is required by xNF Type.
+
+**CAUTION: All templates, for a given xNF Type, shall use the same InventoryNames setting for all commands/playbooks, ""None"" (Default), ""VM"" or ""VNFC"".**"
diff --git a/docs/Chapter8/Ansible-JSON-Key-Value-Description.rst b/docs/Chapter8/Ansible-JSON-Key-Value-Description.rst
index 5179518..e6b48d2 100644
--- a/docs/Chapter8/Ansible-JSON-Key-Value-Description.rst
+++ b/docs/Chapter8/Ansible-JSON-Key-Value-Description.rst
@@ -17,108 +17,78 @@ Ansible JSON Key Value Description
-------------------------------------------------------------
The following provides the key value pairs that must be contained in the
-JSON file supporting Ansible action.
+JSON file supporting APPC/SDN-C Ansible action.
Table B1. Ansible JSON File key value description
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-+---------------+----------------------+---------+----------------------------+
-| **Field Name**| **Description** | **Type**| **Comment** |
-+===============+======================+=========+============================+
-| PlaybookName | VNF providor must |Mandatory|Currently following |
-| | list name of the | |Ansible standard |
-| | playbook relative | |naming, where main |
-| | path used to | |playbook is always |
-| | execute the VNF | |named site.yml, and |
-| | action. | |directory name where |
-| | | |this main playbook resides, |
-| | | |is named after the |
-| | | |command/action playbook |
-| | | |performs, in lower case, |
-| | | |example, configure. |
-+---------------+----------------------+---------+----------------------------+
-| Action | Name of VNF action. | Optional| |
-+---------------+----------------------+---------+----------------------------+
-| EnvParameters | A JSON dictionary | Optional|Depends on the VNF action. |
-| | which should list key| | |
-| | value pairs to be | |Attribute names (variable |
-| | passed to the Ansible| |names) passed to Ansible |
-| | playbook. These | |shall follow Ansible valid |
-| | values would | |variable names: "Variable |
-| | correspond to | |names should be letters, |
-| | instance specific | |numbers, and underscores. |
-| | parameters that a | |Variables should always |
-| | playbook may need to | |start with a letter." |
-| | execute an action. | | |
-+---------------+----------------------+---------+----------------------------+
-| NodeList |Ansible inventory | Optional|If not provided, pre-loaded |
-| |hosts file with | |(VNF) inventory hosts |
-| |VNF groups and | |file must exist in the |
-| |respective IP | |Ansible Server otherwise |
-| |addresses or DNS | |request fails. |
-| |supported FQDNs | | |
-| |that the playbook must| | |
-| |be executed against. | | |
-+---------------+----------------------+---------+----------------------------+
-| FileParameters| A JSON dictionary | Optional| Depends on the VNF action |
-| | where keys are | | and playbook design. |
-| | filenames and values | | |
-| | are contents of | | |
-| | files. The Ansible | | |
-| | Server will utilize | | |
-| | this feature to | | |
-| | generate files with | | |
-| | keys as filenames and| | |
-| | values as content. | | |
-| | This attribute can be| | |
-| | used to generate | | |
-| | files that a playbook| | |
-| | may require as part | | |
-| | of execution. | | |
-+---------------+----------------------+---------+----------------------------+
-| Timeout | Time (in seconds) | Optional| |
-| | that a playbook is | | |
-| | expected to take to | | |
-| | finish execution for | | |
-| | the VNF. If playbook | | |
-| | execution time | | |
-| | exceeds this value, | | |
-| | Ansible Server will | | |
-| | terminate the | | |
-| | playbook process. | | |
-+---------------+----------------------+---------+----------------------------+
+.. csv-table:: **TOSCA Definition**
+ :file: Ansible JSON File Key Value Description.csv
+ :header-rows: 1
+ :align: center
+ :widths: auto
Ansible JSON file example:
.. code-block:: json
{
-
"Action":"Configure",
-
"PlaybookName": "<VNFCode>/<Version>/ansible/configure/site.yml",
-
- "NodeList": ["test1.vnf_b.onap.com", "test2.vnf_b.onap.com"],
-
+ "NodeList": [
+ {
+ "vnfc_type": "oam",
+ "ne_id_vip": "vfdb9904vm001oam001",
+ "floating_ip_address_vip": "1xx.2yy.zzz.109",
+ "site": "wp0ny",
+ "vm_info": [
+ {
+ "ne_id": "vfdb9904vm001oam001",
+ "fixed_ip_address": "1xx.2yy.zzz.109"
+ },
+ {
+ "ne_id": "vfdb9904vm002oam001",
+ "fixed_ip_address": "1xx.2yy.zzz.110"
+ }
+ ]
+ },
+ {
+ "vnfc_type": "rdb",
+ "site": "wp0ny",
+ "vm_info": [
+ {
+ "ne_id": "vfdb9904vm003rdb001",
+ "fixed_ip_address": "1xx.2yy.zzz.105"
+ },
+ {
+ "ne_id": "vfdb9904vm004rdb001",
+ "fixed_ip_address": "1xx.2yy.zzz.106"
+ }
+ ]
+ }
+ ],
"Timeout": 60,
-
- "EnvParameters": {"Retry": 3, "Wait": 5, "ConfigFile":"config.txt"},
-
+ "InventoryNames": "None",
+ "EnvParameters": {"vnf_instance": "$vnf-instance", "Retry": 3, "Wait": 5, "ConfigFile":"config.txt", "healthcheck_type": "$healthcheck_type", "target_vm_list": ["$ne-id1","..."] },
"FileParameters": {"config.txt":"db_ip=10.1.1.1, sip_timer=10000"}
-
}
-In the above example, the Ansible Server will:
+In the above example, the Ansible Server Rest API code will:
-a. Process the "FileParameters" dictionary and generate a file named
- ‘config.txt’ with contents set to the value of the ‘config.txt’ key.
+#. Process the "FileParameters" dictionary and generate a file named
+ 'config.txt' with contents set to the value of the 'config.txt' key.
-b. Execute the playbook named ‘<VNFCode>/<Version>/ansible/configure/site.yml’
- on nodes with FQDNs test1.vnf\_b.onap.com and test2.vnf\_b.onap.com
- respectively while providing the following key value pairs to the playbook:
- Retry=3, Wait=5, ConfigFile=config.txt
+#. Execute the playbook named '<xNFCode>/<Version>/ansible/configure/site.yml'
+ on nodes with listed IP addresses (or FQDNs) respectively while providing
+ the following key value pairs to the playbook: Retry=3, Wait=5,
+ ConfigFile=config.txt
-
-c. If execution time of the playbook exceeds 60 secs (across all hosts),
+#. If execution time of the playbook exceeds 60 secs (across all hosts),
it will be terminated.
+#. Inventory hosts file to be build with only IP addresses (or FQDNs), IP
+ addresses and VM names, or IP addresses and xNFC names depending on
+ InventoryNames setting in the template(s) passed to Ansible Server as part
+ of the Rest API request. In a later section with Ansible examples, examples
+ of supported inventory hosts file formats are shared.
+
diff --git a/docs/Chapter8/Ansible-Playbook-Examples.rst b/docs/Chapter8/Ansible-Playbook-Examples.rst
index 5c3d5cd..8367ed0 100644
--- a/docs/Chapter8/Ansible-Playbook-Examples.rst
+++ b/docs/Chapter8/Ansible-Playbook-Examples.rst
@@ -19,15 +19,20 @@ Ansible Playbook Examples
The following sections contain examples of Ansible playbooks
which follow the guidelines.
-Guidelines for Playbooks to properly integrate with APPC
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Guidelines for Playbooks to properly integrate with APPC/SDN-C
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-NOTE: To support concurrent requests to multiple VNF instances of same
-or different type, VNF hosts and other files with VNF specific default
-values are kept or created in separate directories.
+**NOTE**: To support concurrent requests to multiple VNF instances of same or
+different type, VNF files dynamically created by playbooks with VNF specific
+default values are kept or created in separate directories.
-Example of an Ansible command (after pwd) to run playbook again
-vfdb9904v VNF instance:
+VNF inventory hosts file names include the VNF instance name and are now
+created under base ``inventory`` directory to preserve properties of (global)
+``inventory/group_vars`` files with variables, example, site specific
+attributes for DNS, NTP, etc.
+
+**Example of an Ansible command (after pwd) to run playbook again
+vfdb9904v VNF instance:**
.. code-block:: text
@@ -42,10 +47,10 @@ vfdb9904v VNF instance:
inventory directory, not a subdirectory under inventory. In the above
example: vfdb9904vhosts (removed / VNF name and hosts vfdb9904/vhosts)
-Example of corresponding APPC API Call from ONAP – Ansible Server
-Specifications:
+**Example of corresponding APPC/SDN-C API Call from ONAP – Ansible Server
+Specifications:**
-An example of a curl request simulating a Rest API POST requesting execution
+Using a curl request simulating a Rest API POST requesting execution
of configure Playbook (using playbook relative path):
.. code-block:: text
@@ -56,7 +61,7 @@ of configure Playbook (using playbook relative path):
http://ansible.server.com:5000/Dispatch
Rest API GET request to obtain response/results for prior request
-(same Id as POST request above):
+(same ID as POST request above):
.. code-block:: text
@@ -66,16 +71,16 @@ Rest API GET request to obtain response/results for prior request
Comments:
- An ID number is assigned to each request. This ID number is used to
- track request down to completion and provide status to APPC when
- requested.
+ track request down to completion and provide status to APPC/SDN-C
+ when requested.
-- Playbook Name relative path provided in the request as PlaybookName
+- Playbook Name relative path provided in the request as PlaybookName.
-- Ansible Server Rest API is aware of playbook’s root directory which may
+- Ansible Server Rest API is aware of playbook's root directory which may
vary from instance to instance or Ansible Server cluster to cluster.
Ansible Playbooks will use the VNF instance name (passed using
---extra-vars "vnf\_instance=vfdb9904v") to identify other default values
+--extra-vars "vnf_instance=vfdb9904v") to identify other default values
to run the playbook(s) against the target VNF instance. Same example as
above:
@@ -85,16 +90,19 @@ above:
Each Ansible Server or cluster is assigned its own identification to be used
to authenticate to VNF VMs using Ansible Server or cluster specific set of
-SSH keys that may be rotated regularly. Here hosts file, no longer referencing
-file with SSH key credentials, to run ansible-playbook listed in this example
-above (IP addresses were scrubbed):
+SSH keys that may be rotated regularly. Here a hosts file, without any SSH key
+credentials, to run ansible-playbook listed in this example above (IP
+addresses were scrubbed):
.. code-block:: text
- $ more ../inventory/vfdb9904v/hosts
+ $ more ../inventory/vfdb9904vhosts
[host]
localhost ansible_connection=local
+ [oamvip]
+ 1xx.2yy.zzz.108
+
[oam]
1xx.2yy.zzz.109
1xx.2yy.zzz.110
@@ -103,57 +111,89 @@ above (IP addresses were scrubbed):
1xx.2yy.zzz.105
1xx.2yy.zzz.106
-NOTE: APPC requests to run Playbooks/Cookbooks are specific to a VNF,
-but could be more limited to one VM or one type of VM by the request
-parameters. Actions that may impact a site (LCP), a service, or an
-entire platform must be orchestrated by MSO in order to execute requests
-via APPC which then invoke VNF level playbooks. Playbooks that impact
-more than a single VNF are not the current focus of these guidelines.
+ [wp0ny:children]
+ oam
+ rdb
-Since last release of these guidelines, based on recent learnings,
-moving VNF Type global variables under inventory/group_vars files, this
-way variables and respective values are available to all playbooks without
-being explicitly referenced though an include statement. Also creating
-templates that are VNF Type specific, but moving away from static files
-that are VNF instance specific, working to obtain VNF instance specific
-from other sources, inventory database, etc.
+Virtual IP addresses that can be used by multiple VMs, usually, used by the
+active VM of an active-standby pair, are placed under a group named after the
+VNFC (VM) type, plus "vip" string, example of such a group name "oamvip". Also
+new on this release, an inventory hosts file site (group) with all groups as
+children (see last three lines in above example), to load site specific
+variables like NTP, DNS IP addresses, and other site specific variables, making
+them global variables to be used by playbooks, namely, configure playbook.
-And here the scrubbed default arguments for this VNF instance(originated
-from previously re-factored playbooks now being phased out):
+**NOTE**: APPC/SDN-C requests to run Playbooks/Cookbooks target a specific VNF
+instance, but could be limited to one VM or one type of VM by the request
+parameters. Actions that may impact a site (LCP), a service, or an
+entire platform must be orchestrated by MSO in order to execute requests
+via APPC/SDN-C which then invoke VNF level playbooks. Playbooks that
+impact more than a single VNF instance are not the current focus of these
+guidelines.
+
+Creating group_vars sub-directories in the same directory that contains the
+command/action main playbook, while following Ansible standards, to auto load
+these variables as global variables is supported as are the majority of
+Ansible standard capabilities.
+
+Certain VNF Type global variables, for example site specific variables, were
+moved under inventory/group_vars files in the Beijing release. This way those
+variables and respective values are available to all playbooks without
+being explicitly referenced through an include vars statement. Also creating
+templates that are VNF Type specific, but moving away from static files that
+are VNF instance specific.
+
+Any remaining VNF instance specific variables that cannot be obtained from
+A&AI or other sources that still need to be created or edited manually,
+in advance of VNF instantiation, shall be created under ``ansible/vars``
+directory. Recommendation is to use JSON files, explicitly referenced by
+the playbooks, for this purpose, example:
+``<VNF_instance_name>.json``.
+
+**Example of playbook task explicitly referencing a VNF instance specific json
+file and loading the contents as global variables**:
.. code-block:: text
- vnf_instance=vfdb9904v
-
- $ more ../vars/vfdb9904v/default_args.yml
- vm_config_oam_vnfc_name: vfdb9904vm001oam001
- vm_config_oam_hostname: vfdb9904vm001
- vm_config_oam_provider_ip_address: 1xx.2yy.zzz.109
- …
-
-IMPORTANT: The APPC and default file attribute name for
-vm\_config\_oam\_vnfc\_name, as an example, is derived from vm\_config
-array structure (list) in the CSAR package ENV file, with dots replaced
-by underscore:
-
-.. code-block:: text
+ $ cat site.yml
+ ---
- vm_config:
+ ...
- oam: {vnfc_name: {{ vm_config_oam_vnfc_name }}, hostname: {{
- vm_config_oam_hostname }}, provider_ip_address: {{
- vm_config_oam_provider_ip_address }
- },
- …
+ - name: get json vars
+ hosts: localhost
+ gather_facts: False
+ tasks:
+ - name: json attributes and values
+ include_vars: "../vars/{{ vnf_instance }}.json"
-Parameters like VNF names, VNFC names, OA&M IP addresses, after
-February, 2018 ONAP release, will be extracted from A&AI by APPC and
-then passed down to Ansible Server, as part of APPC request through REST
-API. In the meantime, VNF instance specific required values, will
-be stored on VNF instance directory, default arguments file and will be
-used as defaults. For parameterized playbooks attribute-value pairs
-passed down by APPC to Ansible Server always take precedence over
-template or VNF instance specific defaults stored in defaults file(s).
+ - name: show variables
+ hosts: localhost
+ gather_facts: False
+ roles:
+ - debug
+ ...
+
+ $ ls -1 ../vars
+ vfdb9904v.json
+ vfdb9905v.json
+ vfdb9906v.json
+ vfdb9907v.json
+ vfdb9908v.json
+
+
+Parameters like VNF names, VNFC names, OA&M IP addresses will be extracted
+from the inventory database (A&AI) by APPC/SDN-C and then passed down to
+Ansible Server in a NodeList attribute, as part of APPC/SDN-C request through
+REST API. The Ansible Server Rest API uses the NodeList contents and
+InventoryNames parameter to build the inventory hosts file for the request,
+according to VNF playbook design needs, with or without VM or VNFC names.
+For parameterized playbooks, attribute-value pairs passed down by APPC/SDN-C
+to Ansible Server, always takes precedence over template or VNF instance
+specific defaults stored in defaults file(s) as they are made part of the
+``ansible-playbook`` run command's ``"—extra-vars"`` list.
+
+**Example**:
.. code-block:: text
@@ -188,29 +228,30 @@ template or VNF instance specific defaults stored in defaults file(s).
vm_config_rdb4_provider_ip_address: 1xx.2yy.zzz.yyy
One of the first tasks on the Ansible Playbooks is to combine the VNF
-type generic template, derived from ENV files in CSAR or other files,
-with these default values stored on the Ansible Server, together with
-the overriding parameters passed down from APPC, to create the VNF
-instance specific set of attribute-value pairs to be used for the run, in
-INI format. Here is an excerpt from such a file that should look
-somewhat similar to ENV files:
+type generic templates, stored on the Ansible Server with playbooks, with
+the overriding parameters passed down from APPC/SDN-C, to create the
+VNF instance specific set of attribute-value pairs to be used for the run, in
+INI format.
+
+Here is an excerpt from such a file that should look somewhat similar to ENV
+files:
.. code-block:: text
$ more tmp/vfdb9904v/all.yml
deployment_prefix: vfdb9904v
- …
+ ...
timezone: Etc/UTC
- …
+ ...
template_version: '2014-10-16'
stack_name: vfdb9904v
c3dbtype: OAM
stackName: vfdb9904v
juno_base: true
- …
+ ...
-# logins list contain 'login name', 'login group', 'login password'
+# logins list contains 'login name', 'login group', 'login password'
.. code-block:: text
@@ -220,8 +261,8 @@ somewhat similar to ENV files:
- { name: 'peruser', group: 'peruser', password: ' abcdefgha' }
- { name: 'dbuser', group: 'dbuser', password: ' abcdefgha' }
-NOTE: Arguments passed by APPC to Ansible Server to run a playbook take
-precedence over any defaults stored in Ansible Server.
+**NOTE**: Arguments passed by APPC/SDN-C to Ansible Server to run a
+playbook take precedence over any defaults stored in Ansible Server.
Ansible Playbooks – Notes On Artifacts Required to Run Playbooks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -230,10 +271,6 @@ Inventory hosts file: should be VNF instance specific.
Default variables: should be VNF instance specific.
-NOTE: Some playbooks may rely on inventory directory contents to target
-the collection of VNFs in the Services Platform supported through
-Ansible.
-
Playbooks and paths to referenced files: Playbooks shall not use
absolute paths in include or import entries (variables or playbooks) or
other types of references.
@@ -251,212 +288,270 @@ below that ansible root directory, in other subdirectories to support
on-boarding and portability of VNF collection of playbooks and related
artifacts.
-Designing for a shared environment, concurrently running playbooks,
-targeting multiple VNF instances – inventory hosts file:
+**Designing for a shared environment, concurrently running playbooks,
+targeting multiple VNF instances – inventory hosts file:**
To avoid inventory hosts file overwrites or collisions between multiple
concurrently running VNF instance requests, chosen approach is for each
VNF instance hosts file, to be stored under the Ansible Server Playbooks
-root directory, under the inventory subdirectory, and under a directory
-for each VNF instance, named after the VNF instance, as follows:
+root directory, under the inventory subdirectory, on an inventory hosts file
+named after the VNF instance, as follows:
+
+.. code-block:: text
+
+ ansible/inventory/<VNF_instance_name>hosts
-ansible/inventory/<VNF\_instance\_name>/hosts
+Example of inventory hosts file path, relative to ansible playbooks (ansible)
+root directory (playbooks_dir):
+
+.. code-block:: text
-Example of inventory hosts file path, relative to ansible playbooks root
-directory (playbooks\_dir): ansible/inventory/vnfx0001v/hosts
+ ansible/inventory/vnfx0001vhosts
**Designing for a shared environment, concurrently running multiple playbooks,
targeting multiple VNF instances – default argument variables for
specific VNF instances:**
-Files containing attribute name value pairs (variable name and default
-values), referenced/included by playbooks – Files containing VNF
-instance specific default values – in a later APPC release, some or all
-the default attribute value pairs contained in the defaults file, may be
-passed down by APPC, to the Ansible Server, overriding these defaults:
+VNF instance specific files referenced/included by playbooks, containing
+default values, example, ``default_args.yml``, shall be stored under a
+directory with VNF instance name on the path (backwards compatibility) or
+contain VNF instance name as part of the name.
-VNF instance specific files
-referenced/included by playbooks, containing default values, example,
-default\_args.yml, shall be stored under a directory with VNF instance
-name on the path.
+**Example**:
-Example:
+.. code-block:: text
+
+ ansible/vars/<VNF_instance_name>/default_args.yml
+
+**Example of include statement**:
+
+.. code-block:: text
+
+ include_vars: ../vars/{{ vnf_instance }}/default_args.yml
+
+**Example – all in vars directory**:
-ansible/vars/<VNF\_instance\_name>/default\_args.yml
+.. code-block:: text
+
+ ansible/vars/<VNF_instance_name>default_args.yml
-Example of include statement:
+**Example of include statement without vars subdirectory**:
+
+.. code-block:: text
-- include_vars: ../vars/{{ vnf_instance }}/default_args.yml
+ include_vars: ../vars/{{ vnf_instance }}default_args.yml
-Again, this was originated from previously re-factored playbooks, now being
-phased out, to move away from having to create VNF instance specific files
-with VNF instance default variables. Moving to extract these values from
-inventory databases and provide them to Ansible Server as part of the APPC
-request, but may be used in a transition from having everything stored in the
-Ansible Server to APPC extracting and providing VNF instance specific
-attribute-value pairs to the Ansible Server as part of the request.
+Again, this has originated from previously re-factored playbooks, now being
+phased out. Direction is to move away from having to create VNF instance
+specific files with VNF instance default variables whenever possible. Moving to
+extract these values from inventory databases and provide them to Ansible
+Server as part of APPC/SDN-C request, but may be used in a transition
+from having everything stored in the Ansible Server to APPC/SDN-C
+extracting and providing VNF instance specific attribute-value pairs to the
+Ansible Server as part of the request.
-Files containing attribute name value pairs (variable name and default
+**Files containing attribute name value pairs (variable name and default
values), referenced/included by playbooks – created dynamically by
-playbooks:
+playbooks:**
-To avoid
-overwrites or collisions of multiple concurrently running VNF instance
+To avoid overwrites or collisions of multiple concurrently running VNF instance
requests, files created dynamically by playbooks, based on VNF generic
templates, combined with default values and arguments passed down by
-APPC (as part of the request), shall be stored under a directory with
-VNF instance name on the path.
+APPC/SDN-C (as part of the request), shall be stored under a directory
+with VNF instance name on the path.
-Example:
+**Example**:
+
+.. code-block:: text
+
+ tmp/<VNF_instance_name>/all.yml
-tmp/<VNF\_instance\_name>/all.yml
+Files containing site specific (Openstack location non-instance specific)
+attribute name value pairs, like NTP server and DNS server's IP addresses and
+other parameters, referenced/included by playbooks, not VNF specific –
+Could/should be stored under inventory/group_vars directory, in a subdirectory
+named after the string used to identify the site (nyc1, lax2,...).
-Files containing site specific (Openstack location non-instance
-specific) attribute name value pairs, like NTP server and DNS server’s
-IP addresses and other parameters, referenced/included by playbooks, not
-VNF specific – Could/should be stored under inventory/group_vars directory,
-in a subdirectory named after the string used to identify the site (nyc1,
-lax2,…).
+**Examples**:
-Examples:
-ansible/inventory/group_vars/<Site>
+.. code-block:: text
-ansible/inventory/group_vars/nyc1
+ ansible/inventory/group_vars/<Site>
-ansible/inventory/group_vars/lax2
+ ansible/inventory/group_vars/wp0ny
+ ansible/inventory/group_vars/la0ca
-\ **Ansible Server Design - Directory Structure**
+**Ansible Server Design - Directory Structure**
To help understanding the contents of this section, here are few basic
definitions:
-**VNF type a.k.a VNF Function Code** - Based on current Services
-Platform naming convention, each Virtual Network Function is assigned a
-4 character string (example vfdb), these are 4 characters in
-the VNF instance name, followed by (4) numbers, ending in a "v", but the
-naming convention is evolving. VNF instance name in
-some cases corresponds to the stack name for the VNF when VNF instance
-is built based on a single module, single stack. Example of VNF instance
-name: vfdb9904v. All VNF performing this function, running the same
-software, coming from the same VNF provider will have the same 4
+**VNF type a.k.a VNF Function Code** - Based on current naming convention,
+each Virtual Network Function is assigned a 4 character string (example vfdb),
+these are 4 characters in the VNF instance name, followed by (4) numbers,
+ending in a "v", but the naming convention is evolving to include geographical
+location. VNF instance name in some cases corresponds to the stack name for the
+VNF when VNF instance is built based on a single module, single stack. Example
+of VNF instance name: vfdb9904v. All VNF performing this function, running the
+same software, coming from the same VNF provider will have the same 4
characters in the VNF instance name, in this example, vfdb.
-NOTE: New naming convention includes a prefix indicating geographical
+**NOTE**: New naming convention includes a prefix indicating geographical
location where VNF is instantiated.
VNF type, determined through these 4 characters, is also known as VNF
-Function Code and is assigned by inventory team. All Services Platform
-VNF Function Codes can be found in inventory database and/or A&AI as
-well as Services Platform Network Design Documents.
+Function Code. All VNF Function Codes can be found in A&AI as well as
+other Network Design Documents.
-Version – As in VNF software version is the release of the software
+**Version** – VNF software version is the release of the software
running on the VNF for which the playbooks were developed. VNF
configuration steps may change from release to release and this
<Version> in the path will allow the Ansible Server to host playbooks
associated with each software release. And run the playbooks that match
-the software release running on each VNF instance. APPC initially will
-not support playbook versioning only latest playbook is supported or a hard
-coded version that later should become a variable to allow multiple
-actively in use playbook versions according to VNF release.
+the software release running on each VNF instance. APPC/SDN-C
+does not support playbook versioning only latest playbook is supported or a
+hard coded version that later should become a variable to allow multiple
+actively, in use, playbook versions,to be picked according to VNF
+release/version.
-Playbook Function - Is a name associated with a life cycle management
+**Playbook Function** - A name associated with a life cycle management
task(s) performed by the playbook(s) stored in this directory. It should
clearly identify the type of action(s) performed by the main playbook
and possibly other playbooks stored in this same directory. Ideally,
-playbook function would match APPC corresponding command or function that
-is performed by the main playbook in this directory. Following Ansible naming
-standards main playbook is usually named site.yml. There can be other
+playbook function would match APPC/SDN-C corresponding command or function
+that is performed by the main playbook in this directory. Following Ansible
+naming standards main playbook is usually named site.yml. There can be other
playbooks on the same directory that use a subset of the roles used by the
-main playbook site.yml. Examples of Playbook Function directory names:
+main playbook site.yml. Examples of Playbook Function directory names(matching
+APPC/SDN-C command name in lowercase):
+
+- ``configure`` – Contains post-instantiation (bulk) configuration
+ playbook(s), roles,...
+
+- ``healthcheck`` – Contains VNF health check playbook(s), roles,...
+
+- ``stop`` – Contains VNF application stop (stopApplication) playbook(s),
+ roles,...
+
+- ``start`` – Contains VNF application start (startApplication) playbook(s),
+ roles,...
+
+- ``configbackup`` – Contains VNF configuration backup (ConfigBackup)
+ playbook(s), roles,...
+
+- ``configrestore`` – Contains VNF configuration restore (ConfigBackup)
+ playbook(s), roles,...
+
+- ``configmodify`` – Contains VNF configuration modification (ConfigModify)
+ playbook(s), roles,...
-- configure – Contains post-instantiation (bulk) configuration
- playbooks, roles,…
+- ``configscaleout`` – Contains VNF scale-out configuration/reconfiguration
+ (ConfigBackup) playbook(s), roles,...
-- healthcheck – Contains VNF health check playbook(s), roles,…
+- ``quiescetraffic`` – Contains VNF traffic graceful drain/quiesce
+ (QuiesceTraffic) playbook(s), roles,...
-- stop – Contains VNF application stop (stopApplication) playbook(s),
- roles,…
+- ``resumetraffic`` – Contains VNF resume/restore traffic (ResumeTraffic)
+ playbook(s), roles,...
-- start – Contains VNF application start (startApplication) playbook(s),
- roles,…
+- ``upgradeprecheck`` – Contains VNF current (old) SW version check
+ (UpgradePreCheck) playbook(s), roles,...
+
+- ``upgradebackup`` – Contains VNF backup prior to SW upgrade (UpgradeBackup)
+ playbook(s), roles,...
+
+- ``upgradesoftware`` – Contains VNF SW upgrade (UpgradeSoftware)
+ playbook(s), roles,...
+
+- ``upgradepostcheck`` – Contains VNF upgraded (new) SW version check
+ (UpgradePostCheck) playbook(s), roles,...
+
+- ``upgradebackout`` – Contains VNF (SoftwareUpgrade) back out
+ (UpgradeBackout) playbook(s), roles,...
Directory structure to allow hosting multiple version sets of playbooks,
for the same VNF type, to be hosted in the runtime environment on the
Ansible Servers. Generic directory structure:
-Ansible Playbooks – Function directory and main playbook:
+**Ansible Playbooks – Function directory and main playbook**:
.. code-block:: text
<VNF type>/<Version>/ansible/<Playbook Function>/site.yml
-Example – Post-instantiation (bulk) configuration –APPC Function -
-Configure:
+**Example – Post-instantiation (bulk) configuration – APPC/SDN-C Function -
+Configure**:
.. code-block:: text
<VNF type>/<Version>/ansible/configure/site.yml
-Example – Post-instantiation (bulk) configuration –APPC Function
-– Configure – VNF software version 16.1:
+**Example – Post-instantiation (bulk) configuration – APPC/SDN-C Function
+– Configure – VNF software version 16.1**:
.. code-block:: text
vfdb/V16.1/ansible/configure/site.yml
-Example – Health-check –APPC Function - HealthCheck:
+**Example – Health-check - APPC/SDN-C Function - HealthCheck**:
.. code-block:: text
<VNF type>/<Version>/ansible/healthcheck/site.yml
-OR (Function directory name does not need to match APPC function name)
+OR (Function directory name is not required to match APPC/SDN-C function name
+exactly)
.. code-block:: text
<VNF type>/<Version>/ansible/check/site.yml
-Ansible Directories for other artifacts – VNF inventory hosts file -
-Required:
+**Ansible Directories for other artifacts – VNF inventory hosts file -
+Required**:
.. code-block:: text
<VNF type>/<Version>/ansible/inventory/<VNF instance name>hosts
-Ansible Directories for other artifacts – VNF instance specific default
-arguments – Optional:
+**NOTE**: Default groups, in inventory hosts file, will be created based on
+VNFC type (represented by 3 characters) in VNFC name. Example: "oam", "rdb",
+"dbs", "man", "iox", "app",...
-.. code-block:: text
+**Ansible Directories for other artifacts – VNF instance specific default
+arguments – Optional**:
- <VNF type>/<Version>/ansible/group_vars/<VNF instance name>
+.. code-block:: text
-NOTE: This requirement is expected to be deprecated all or in part in the
-future, for automated actions, once APPC can pass down all VNF specific
-arguments for each action. Requirement remains while manual actions are
-to be supported. Other automated inventory management mechanisms may be
-considered in the future, Ansible supports many automated inventory
-management mechanisms/tools/solutions.
+ <VNF type>/<Version>/ansible/vars/<VNF instance name>.json (Preferred)
-Ansible Directories for other artifacts – VNF (special) groups –
-Optional:
+OR
.. code-block:: text
- <VNF type>/<Version>/ansible/inventory/group_vars/<VNF instance name>
+ <VNF type>/<Version>/ansible/vars/<VNF instance name>.yml
+ (INI format accepted/supported by Ansible)
+
+**NOTE**: Requirement remains while manual actions to create or edit xNF
+instance specific files are supported. All files manually created or edited
+should be placed in this one directory (``ansible/vars``).
+
+**Ansible Directory for site specific attribute-value pairs (in INI format)
+- VNF Site files:**:
-NOTE: Default groups will be created based on VNFC type, 3 characters,
-on VNFC name. Example: "oam", "rdb", "dbs", "man", "iox", "app",…
+.. code-block:: text
+
+ <VNF type>/<Version>/ansible/inventory/group_vars/<Site name>
-Ansible Directories for other artifacts – VNF (special) other files –
-Optional – Example – License file:
+**Ansible Directories for other artifacts – VNF (special) other files –
+Optional – Example – License file**:
.. code-block:: text
<VNF type>/<Version>/ansible/<Other directory(s)>
-CAUTION: On referenced files used/required by playbooks.
+**CAUTION**: On referenced files used/required by playbooks.
- To avoid missing files, during on-boarding or uploading of Ansible
Playbooks and related artifacts, all permanent files (not generated
@@ -472,155 +567,295 @@ CAUTION: On referenced files used/required by playbooks.
.. code-block:: text
- <VNF type>/<Version>/ansible/
+ <VNF type>/<Version>/ansible/
-There will be a soft link to the latest set of Ansible Playbooks for
-each VNF type.
+There is a soft link to the latest set of Ansible Playbooks for each VNF type.
+This will be deprecated with (A&AI) inventory support for VNF version.
VNF type directories use A&AI inventory VNF function code. Ansible
Playbooks will be stored on a Cinder Volume mounted on the Ansible
-Servers as /storage. Example:
+Servers as /storage that is used as a local cache for playbooks and other
+related artifacts cloned or pulled (updates) from central (git) repository.
+
+Example:
-/storage/vfdb/latest/ansible – This soft link point to the latest set of
+``/storage/vfdb/latest/ansible`` – This soft link point to the latest set of
playbooks (or the only set)
-/storage/vfdb/V16.1/ansible – Root directory for database VNF Ansible
+``/storage/vfdb/V16.1/ansible`` – Root directory for database VNF Ansible
Playbooks for release 16.1
-CAUTION: To support this directory structure as the repository to store
-Ansible Playbooks run by APPC, APPC API in the Ansible Server side needs
-to be configured to run playbooks from directory, not MySQL database.
+**CAUTION**: To support this directory structure as the repository to store
+Ansible Playbooks run by APPC/SDN-C, APPC/SDN-C API in the Ansible
+Server side needs to be configured to run playbooks from directory, not MySQL
+database as was the case in the original Ansible proof-of-concept.
+
+Ansible Server HTTP will be configured to support APPC/SDN-C REST API
+requests to run playbooks as needed, against specific VNF instances, or
+specific VM(s) as specified in the request(pending APPC/SDN-C tests and
+implementation details to target single VM in VNF).
+
+APPC/SDN-C REST API to Ansible Server is documented separately and
+can be found under ONAP (onap.org).
+
+
+Ansible Inventory Hosts File – Supported Formats
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Supported inventory hosts file examples, built from this NodeList model,
+extracted from A&AI by APPC/SDN-C and passed to the Ansible
+Server via Rest API as part of request:
+
+.. code-block:: json
+
+ {
+
+
+ "NodeList": [
+ {
+ "vnfc_type": "oam",
+ "ne_id_vip": "vfdb9904vm001oam001",
+ "floating_ip_address_vip": "1xx.2yy.zzz.109",
+ "site": "wp0ny",
+ "vm_info": [
+ {
+ "ne_id": "vfdb9904vm001oam001",
+ "fixed_ip_address": "1xx.2yy.zzz.109"
+ },
+ {
+ "ne_id": "vfdb9904vm002oam001",
+ "fixed_ip_address": "1xx.2yy.zzz.110"
+ }
+ ]
+ },
+ {
+ " vnfc_type": "rdb",
+ "site": "wp0ny",
+ "vm_info": [
+ {
+ "ne_id": "vfdb9904vm003rdb001",
+ "fixed_ip_address": "1xx.2yy.zzz.105"
+ },
+ {
+ "ne_id": "vfdb9904vm004rdb001",
+ "fixed_ip_address": "1xx.2yy.zzz.106"
+ }
+ ]
+ }
+ ]
+
+
+ }
+
+With no names, only IP addresses, template "InventoryNames": "None" (Default)
-Ansible Server HTTP will be configured to support APPC REST API requests
-to run playbooks as needed, against specific VNF instances, or specific
-VM(s) as specified in the request.
+.. code-block:: text
-ONAP APPC REST API to Ansible Server is documented separately and can be
-found under ONAP (onap.org).
+ $ more ../inventory/vfdb9904vhosts
+ [host]
+ localhost ansible_connection=local
-**Ansible Server – On-boarding Ansible Playbooks**
+ [oamvip]
+ 1xx.2yy.zzz.108
+
+ [oam]
+ 1xx.2yy.zzz.109
+ 1xx.2yy.zzz.110
+
+ [rdb]
+ 1xx.2yy.zzz.105
+ 1xx.2yy.zzz.106
+
+ [wp0ny:children]
+ oam
+ rdb
+
+With VM names and IP addresses, template inventory names setting "InventoryNames":
+"VM"
+
+.. code-block:: text
+
+ $ more ../inventory/vfdb9904vhosts
+ [host]
+ localhost ansible_connection=local
+
+ [oamvip]
+ vfdb9904vm001vip ansible_host=1xx.2yy.zzz.108
+
+ [oam]
+ vfdb9904vm001 ansible_host=1xx.2yy.zzz.109
+ vfdb9904vm002 ansible_host=1xx.2yy.zzz.110
+
+ [rdb]
+ vfdb9904vm003 ansible_host=1xx.2yy.zzz.105
+ vfdb9904vm004 ansible_host=1xx.2yy.zzz.106
+
+ [wp0ny:children]
+ oam
+ rdb
+
+With VM names and IP addresses, template inventory names setting
+"InventoryNames": "VNFC"
+
+.. code-block:: text
+
+ $ more ../inventory/vfdb9904vhosts
+ [host]
+ localhost ansible_connection=local
+
+ [oamvip]
+ vfdb9904vm001oam001vip ansible_host=1xx.2yy.zzz.108
+
+ [oam]
+ vfdb9904vm001oam001 ansible_host=1xx.2yy.zzz.109
+ vfdb9904vm002oam001 ansible_host=1xx.2yy.zzz.110
+
+ [rdb]
+ vfdb9904vm003rdb001 ansible_host=1xx.2yy.zzz.105
+ vfdb9904vm004rdb001 ansible_host=1xx.2yy.zzz.106
+
+ [wp0ny:children]
+ oam
+ rdb
-Once playbooks are developed following the guidelines listed in prior
-section(s), playbooks need to be on-boarded onto Ansible Server(s). In
-the future, they’ll be on-boarded and distributed through ONAP, at least
-that is the proposed plan, but for now they need to be uploaded
-manually. There is work in progress to use a Git as the playbook
-repository to store and track playbooks by version, version control.
+
+
+Ansible Server – On-boarding Ansible Playbooks
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Once playbooks are developed following these guidelines, playbooks need to be
+on-boarded onto Development Ansible Server(s), and placed under (git) code
+control. Once a (git) repository is created for the set of playbooks, playbooks
+are then pushed to the central repository. Using mechanized identification that
+leverages SSH key based authentication, a mechanism is in place to regularly
+clone or pull updates from central repository to runtime Ansible Server
+Clusters, to perform an automated controlled distribution of playbooks and
+related artifacts to clustered runtime Ansible Servers.
These are the basic steps to on-board playbooks manually onto the
Ansible Server.
-1. Upload CSAR, zip, or tar file containing VNF playbooks and related
- artifacts.
+#. Upload CSAR, zip, or tar file containing VNF playbooks and related
+ artifacts to Development Ansible Server with connectivity to central
+ repository.
-2. Create full directory (using –p option below) to store Ansible
+#. Create full directory (using –p option below) to store Ansible
Playbooks and other artifacts under /storage (or other configured)
file system.
- a. Includes VNF type using VNF function code 4 characters under
+ #. Includes VNF type using VNF function code 4 characters under
/storage.
- b. Includes VNF "Version" directory as part of the path to store
+ #. Includes VNF "Version" directory as part of the path to store
playbooks for this VNF version.
- c. Include generic ansible root directory. Creating full directory
+ #. Include generic ansible root directory. Creating full directory
path as an example:
.. code-block:: text
- $ mkdir –p /storage/vfdb/V16.1/ansible**/**
+ $ mkdir –p /storage/vfdb/V16.1/ansible
-3. Make this directory (VNF ansible root directory) current directory
+#. Make this directory (VNF ansible root directory) current directory
for next few steps:
.. code-block:: text
- cd /storage/vfdb/V16.1/ansible/
+ cd /storage/vfdb/V16.1/ansible/
-4. Extract Ansible Playbooks and other Ansible artifacts associated with
+#. Extract Ansible Playbooks and other Ansible artifacts associated with
the playbooks onto the ansible directory. Command depends on the type
of file uploaded, examples would be:
.. code-block:: text
- tar xvf ..
- unzip …
- bunzip ..
+ tar xvf ..
+ unzip ...
+ bunzip ..
-5. Create VNF inventory hosts file with all VMs and
- OA&M IP addresses for all VNF instances with known OA&M IP addresses
- for respective VMs, example:
+#. Create VNF inventory hosts file with all VMs and OA&M IP addresses, and VM
+ or VNFC names as required for the VNF type, grouped by VM/VNFC type. Add
+ site with all groups as children. Inventory hosts file are required for all
+ VNF instances, to be configured and managed through Ansible. Inventory hosts
+ file example:
.. code-block:: text
- $ mkdir inventory
-
- $ touch inventory/vfdb9904vhosts
+ $ mkdir inventory
- $ cat inventory/vfdb9904vhosts
+ $ touch inventory/vfdb9904vhosts
- [host]
- localhost ansible\_connection=local
+ $ cat inventory/vfdb9904vhosts
- [oam]
- 1xx.2yy.zzz.109
- 1xx.2yy.zzz.110
+ [host]
+ localhost ansible_connection=local
- [rdb]
- 1xx.2yy.zzz.105
- 1xx.2yy.zzz.106
+ [oamvip]
+ 1xx.2yy.zzz.108
-6. (Optional, being deprecated) Create directory to hold default
-arguments for each VNF instance,
-example:
+ [oam]
+ 1xx.2yy.zzz.109
+ 1xx.2yy.zzz.110
-.. code-block:: text
+ [rdb]
+ 1xx.2yy.zzz.105
+ 1xx.2yy.zzz.106
- $ mkdir –p vars/vfdb9904v
- $ touch vars/vfdb9904v/default\_args.yml
- $ cat vars/vfdb9904v/default\_args.yml
- vm\_config\_oam1\_vnfc\_name: vfdb9904vm001oam001
- vm\_config\_oam1\_hostname: vfdb9904vm001
- vm\_config\_oam1\_provider\_ip\_address: 1xx.2yy.zzz.109
+ [wp0ny:children]
+ oam
+ rdb
- vm\_config\_oam2\_vnfc\_name: vfdb9904vm002oam001
- vm\_config\_oam2\_hostname: vfdb9904vm002
- vm\_config\_oam2\_provider\_ip\_address: 1xx.2yy.zzz.110
+Virtual IP addresses that can be used by multiple VMs, usually, used by the
+active VM of an active-standby pair, are placed under a group named after the
+VNFC (VM) type, plus "vip" string, example of such a group name "oamvip".
- vm\_config\_rdb1\_vnfc\_name: vfdb9904vm003rdb001
- vm\_config\_rdb1\_hostname: vfdb9904vm003
- vm\_config\_rdb1\_provider\_ip\_address: 1xx.2yy.zzz.105
+#. (Optional) Create directory to hold default arguments for VNF instance,
+ and respective file(s), when required by VNF type, example:
- vm\_config\_rdb2\_vnfc\_name: vfdb9904vm004rdb001
- vm\_config\_rdb2\_hostname: vfdb9904vm004
- vm\_config\_rdb2\_provider\_ip\_address: 1xx.2yy.zzz.106
+.. code-block:: text
- vm\_config\_rdb3\_vnfc\_name: vfdb9904vm005rdb001
- vm\_config\_rdb3\_hostname: vfdb9904vm005
- vm\_config\_rdb3\_provider\_ip\_address: 1xx.2yy.zzz.xxx
+ $ mkdir –p vars/vfdb9904v.json
+ $
+ $ cat vfdb9904v.json
+ ...
+ {
+ "json_var1": "vfdb9904v_test_var1",
+ "json_var2": "vfdb9904v_test_var2",
+ "json_var3": "vfdb9904v_test_var3"
+ }
+ ...
- vm\_config\_rdb4\_vnfc\_name: vfdb9904vm006rdb001
- vm\_config\_rdb4\_hostname: vfdb9904vm006
- vm\_config\_rdb4\_provider\_ip\_address: 1xx.2yy.zzz.yyy
-NOTE: Please note names in this file shall use underscore "\_" not dots
+**NOTE**: Please note names in this file shall use underscore "_" not dots
"." or dashes "-".
-7. Perform some basic playbook validation running with "--check" option,
+#. Perform some basic playbook validation running with "--check" option,
running dummy playbooks or other.
-NOTE: Each Ansible Server or cluster of Ansible Server will have its own
+#. Make <VNF version> directory current directory to add playbooks and other
+ artifacts under (git) code control:
+
+.. code-block:: text
+
+ cd /storage/vfdb/V16.1
+
+**NOTE**: After creating the repository for the playbooks in the central
+repository a list of (git) commands is provided to add playbooks
+under (git) code control and push them to the newly created repository. Each
+Ansible Server or cluster of Ansible Servers will have its own
credentials to authenticate to VNF VMs. Ansible Server SSH public key(s)
-have to be loaded onto VNF VMs during instantiation or other way before
-Ansible Server can access VNF VMs and run playbooks. HOT templates used
-by heat to instantiate VNFs to be configured by these Ansible Servers running
+have to be loaded onto VNF VMs during instantiation or another way before
+Ansible Server can access VNF VMs and run playbooks. Heat templates used
+to instantiate VNFs to be configured by these Ansible Servers running
playbooks shall include the same SSH public key and load them onto VNF VM(s)
-as part of instantiation.
+as part of instantiation. Same Ansible Server Cluster SSH public keys are to be
+added to repositories to provide each authorized cluster access, to clone and
+pull updates, to each VNF collection of playbooks, from central repository.
Other non-vendor specific playbook tasks need to be incorporated in overall
post-instantiation configuration playbook. Alternative is for company
-developed playbooks to be uploaded and executed, after VNF vendor provided
-playbooks are run.
+developed playbooks to be pushed to repository and executed, after VNF vendor
+provided playbooks are run.
**A couple of playbooks used for proof-of-concept testing as examples:**
@@ -715,3 +950,60 @@ UpgradePostCheck:
msg="*** WARNING *** VNF software release does not match expected new (post-upgrade) release."
when: (version_line | failed) or version_line.stdout.find('1') == -1
+
+Ansible Server – Playbook Example to Discover Ansible Server Mechanized User ID
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Example of playbook role discovering runtime Ansible Server mechanized user ID
+and setting it up on target VNF VM(s) with issued and assigned SSH public key
+with "from=" clause stored onto xxxxx_id_rsa.frompub file:
+
+.. code-block:: text
+
+ $ cat roles/setup_ansible_mechid/tasks/main.yml
+ ---
+
+ - name: set mechid
+ set_fact:
+ ansible_mechid: "{{lookup('ini', 'remote_user section=defaults file=/etc/ansible/ansible.cfg') }}"
+
+ - name: set mechid uid
+ set_fact:
+ ansible_mechuid: "{{lookup('ini', 'remote_user section=defaults file=/etc/ansible/ansible.cfg')[1:] }}"
+
+ - debug: msg="mechid {{ ansible_mechid }} ansible_mechuid {{ ansible_mechuid }}"
+ verbosity=1
+
+ # Create ansible server Mech ID group
+ - group:
+ name: "{{ ansible_mechid }}"
+ state: present
+
+ # add ansible server mech id user
+ - user:
+ name: "{{ ansible_mechid }}"
+ group: "{{ ansible_mechid }}"
+ state: present
+ comment: "Ansible Server Mech ID"
+ expires: 99999
+ groups: 0
+ uid: "{{ ansible_mechuid }}"
+
+ - name: create ansible mech id .ssh directory
+ file: path=/home/{{ ansible_mechid }}/.ssh owner={{ ansible_mechid }} group={{ ansible_mechid }} mode=0700 state=directory
+
+ - name: touch ansible mech id authorized_keys file
+ file: path=/home/{{ ansible_mechid }}/.ssh/authorized_keys owner={{ ansible_mechid }} group={{ ansible_mechid }} mode=0600 state=touch
+
+ - name: get path to mechid id_rsa.pub
+ set_fact:
+ public_key: "{{lookup('ini', 'private_key_file section=defaults file=/etc/ansible/ansible.cfg') }}.frompub"
+ # public_key: "{{lookup('ini', 'private_key_file section=defaults file=/etc/ansible/ansible.cfg') }}.pub"
+
+ - name: setup authorized_keys file
+ authorized_key:
+ user: "{{ ansible_mechid }}"
+ state: present
+ key: "{{ lookup('file', '{{ public_key}}') }}"
+ …
+
diff --git a/docs/data/needs.json b/docs/data/needs.json
index 1c15b05..37da2c5 100644
--- a/docs/data/needs.json
+++ b/docs/data/needs.json
@@ -1,5 +1,5 @@
{
- "created": "2018-10-30T17:03:41.485897",
+ "created": "2018-10-30T22:03:20.607375",
"current_version": "casablanca",
"project": "",
"versions": {
@@ -21858,7 +21858,7 @@
"needs_amount": 750
},
"casablanca": {
- "created": "2018-10-30T17:03:41.485853",
+ "created": "2018-10-30T22:03:20.607332",
"needs": {
"R-00011": {
"description": "A VNF's Heat Orchestration Template's parameter defined\nin a nested YAML file\n**MUST NOT** have a parameter constraint defined.",
@@ -22158,7 +22158,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -22216,7 +22216,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -22485,7 +22485,7 @@
"validation_mode": ""
},
"R-02597": {
- "description": "The xNF **MUST** implement the protocol operation:\n``lock(target)`` - Lock the configuration datastore target.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``lock(target)`` - Lock the configuration data store target.",
"full_title": "",
"hide_links": "",
"id": "R-02597",
@@ -22497,7 +22497,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -22527,7 +22527,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -22545,7 +22545,7 @@
"validation_mode": ""
},
"R-02651": {
- "description": "The xNF **SHOULD** use the Ansible backup feature to save a\ncopy of configuration files before implementing changes to support\noperations such as backing out of software upgrades, configuration\nchanges or other work as this will help backing out of configuration\nchanges when needed.",
+ "description": "The xNF **SHOULD** use available backup capabilities to save a\ncopy of configuration files before implementing changes to support\noperations such as backing out of software upgrades, configuration\nchanges or other work as this will help backing out of configuration\nchanges when needed.",
"full_title": "",
"hide_links": "",
"id": "R-02651",
@@ -22557,7 +22557,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -22570,7 +22570,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -22715,7 +22715,7 @@
"validation_mode": "static"
},
"R-03465": {
- "description": "The xNF **MUST** release locks to prevent permanent lock-outs\nwhen the corresponding ```<partial-unlock>`` operation succeeds.",
+ "description": "The xNF **MUST** release locks to prevent permanent lock-outs\nwhen the corresponding <partial-unlock> operation succeeds.",
"full_title": "",
"hide_links": "",
"id": "R-03465",
@@ -22727,7 +22727,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -22843,7 +22843,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23286,7 +23286,7 @@
"validation_mode": ""
},
"R-07251": {
- "description": "The xNF **MUST** support ONAP Controller's ``ResumeTraffic`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``ResumeTraffic`` command.",
"full_title": "",
"hide_links": "",
"id": "R-07251",
@@ -23298,7 +23298,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -23310,7 +23310,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -23384,7 +23384,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23471,7 +23471,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23700,7 +23700,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23730,7 +23730,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23760,7 +23760,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23818,7 +23818,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -23979,7 +23979,7 @@
"validation_mode": "static"
},
"R-11235": {
- "description": "The xNF **MUST** implement the protocol operation:\n``kill-session(session)`` - Force the termination of **session**.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``kill-session(session``- Force the termination of **session**.",
"full_title": "",
"hide_links": "",
"id": "R-11235",
@@ -23991,7 +23991,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -24080,7 +24080,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -24249,7 +24249,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -24379,7 +24379,7 @@
"validation_mode": ""
},
"R-12706": {
- "description": "The xNF **MUST** support ONAP Controller's ``QuiesceTraffic`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``QuiesceTraffic`` command.",
"full_title": "",
"hide_links": "",
"id": "R-12706",
@@ -24391,7 +24391,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -24403,7 +24403,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -24644,7 +24644,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -25015,7 +25015,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -25632,7 +25632,7 @@
"validation_mode": ""
},
"R-18733": {
- "description": "The xNF **MUST** implement the protocol operation:\n**discard-changes()** - Revert the candidate configuration\ndatastore to the running configuration.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``discard-changes()`` - Revert the candidate configuration\ndata store to the running configuration.",
"full_title": "",
"hide_links": "",
"id": "R-18733",
@@ -25644,7 +25644,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -25717,7 +25717,7 @@
"validation_mode": ""
},
"R-19366": {
- "description": "The xNF **MUST** support ONAP Controller's ``ConfigModify`` command.",
+ "description": "The xNF **MUST** support APPC ``ConfigModify`` command.",
"full_title": "",
"hide_links": "",
"id": "R-19366",
@@ -25729,7 +25729,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -25741,7 +25741,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -25831,7 +25831,7 @@
"validation_mode": ""
},
"R-19922": {
- "description": "The xNF **MUST** support ONAP Controller's ``UpgradePrecheck`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``UpgradePrecheck`` command.",
"full_title": "",
"hide_links": "",
"id": "R-19922",
@@ -25843,7 +25843,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -25855,7 +25855,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -25974,7 +25974,7 @@
"validation_mode": ""
},
"R-20353": {
- "description": "The xNF **MUST** implement both ``:candidate`` and\n``:writable-running`` capabilities. When both **:candidate** and\n``:writable-running`` are provided then two locks should be supported.",
+ "description": "The xNF **MUST** implement both ``:candidate`` and\n``:writable-running`` capabilities. When both ``:candidate`` and\n``:writable-running`` are provided then two locks should be supported.",
"full_title": "",
"hide_links": "",
"id": "R-20353",
@@ -25986,7 +25986,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -26062,7 +26062,7 @@
"validation_mode": "static"
},
"R-20741": {
- "description": "The xNF **MUST** support ONAP Controller's ``Configure`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``Configure`` command.",
"full_title": "",
"hide_links": "",
"id": "R-20741",
@@ -26074,7 +26074,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -26086,7 +26086,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -26693,7 +26693,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -26779,7 +26779,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -27103,6 +27103,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-24189": {
+ "description": "The xNF provider **MUST** deliver a new set of playbooks that includes\nall updated and unchanged playbooks for any new revision to an existing\nset of playbooks.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-24189",
+ "impacts": "",
+ "introduced": "",
+ "keyword": "SHOULD",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Playbook Requirements",
+ "sections": [
+ "Ansible Playbook Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "casablanca",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-24269": {
"description": "The xNF **SHOULD** conform its YANG model to RFC 7407,\n\"A YANG Data Model for SNMP Configuration\", if Netconf used to\nconfigure SNMP engine.",
"full_title": "",
@@ -27116,7 +27146,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -27161,6 +27191,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-24482": {
+ "description": "The xNF **MUST** provide Ansible playbooks that are designed to run using\nan inventory hosts file in a supported format; with site group that shall\nbe used to add site specific configurations to the target xNF VM(s) as\nneeded.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-24482",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-24893": {
"description": "A VNF's Heat Orchestration template's Environment File's\n**MAY** contain the ``event_sinks:`` section.",
"full_title": "",
@@ -27259,7 +27319,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -27545,7 +27605,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -27689,7 +27749,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -27707,7 +27767,7 @@
"validation_mode": ""
},
"R-26567": {
- "description": "The xNF Package **MUST** include a run list of\nroles/cookbooks/recipes, for each supported xNF action, that will\nperform the desired xNF action in its entirety as specified by ONAP\n(see Section 7.c, ONAP Controller APIs and Behavior, for list of xNF\nactions and requirements), when triggered by a chef-client run list\nin JSON file.",
+ "description": "The xNF Package **MUST** include a run list of\nroles/cookbooks/recipes, for each supported xNF action, that will\nperform the desired xNF action in its entirety as specified by ONAP\n(see Section 7.c, APPC/SDN-C APIs and Behavior, for list of xNF\nactions and requirements), when triggered by a chef-client run list\nin JSON file.",
"full_title": "",
"hide_links": "",
"id": "R-26567",
@@ -27719,7 +27779,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -27862,7 +27922,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -28202,7 +28262,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -28232,7 +28292,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -28306,7 +28366,7 @@
"validation_mode": ""
},
"R-29324": {
- "description": "The xNF **SHOULD** implement the protocol operation:\n``copy-config(target, source) -`` Copy the content of the\nconfiguration data store source to the configuration data store target.",
+ "description": "The xNF **SHOULD** implement the protocol operation:\n``copy-config(target, source)`` - Copy the content of the\nconfiguration data store source to the configuration data store target.",
"full_title": "",
"hide_links": "",
"id": "R-29324",
@@ -28318,7 +28378,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -28336,7 +28396,7 @@
"validation_mode": ""
},
"R-29488": {
- "description": "The xNF **MUST** implement the protocol operation:\n**get-config(source, filter)** - Retrieve a (filtered subset of\na) configuration from the configuration data store source.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``get-config(source, filter`` - Retrieve a (filtered subset of\na) configuration from the configuration data store source.",
"full_title": "",
"hide_links": "",
"id": "R-29488",
@@ -28348,7 +28408,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -28378,7 +28438,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -28744,7 +28804,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -28917,7 +28977,7 @@
"section_name": "REST APIs",
"sections": [
"REST APIs",
- "VNF REST APIs",
+ "xNF REST APIs",
"Configuration Management"
],
"status": null,
@@ -29021,7 +29081,7 @@
"validation_mode": ""
},
"R-32217": {
- "description": "The xNF **MUST** have routable FQDNs that are reachable via\nthe Ansible Server for the endpoints (VMs) of a xNF on which playbooks\nwill be executed. ONAP will initiate requests to the Ansible Server\nfor invocation of playbooks against these end points [#7.3.3]_.",
+ "description": "The xNF **MUST** have routable management IP addresses or FQDNs that\nare reachable via the Ansible Server for the endpoints (VMs) of a\nxNF that playbooks will target. ONAP will initiate requests to the\nAnsible Server for invocation of playbooks against these end\npoints [#7.3.3]_.",
"full_title": "",
"hide_links": "",
"id": "R-32217",
@@ -29033,7 +29093,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -29046,7 +29106,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -29219,7 +29279,7 @@
"validation_mode": ""
},
"R-328086": {
- "description": "The xNF **MUST**, if serving as a distribution point or anchor point for steering point\nfrom source to destination, support the ONAP Controller's\n``DistributeTraffic`` command.",
+ "description": "The xNF **MUST**, if serving as a distribution point or anchor point for\nsteering point from source to destination, support the ONAP Controller's\n``DistributeTraffic`` command.",
"full_title": "",
"hide_links": "",
"id": "R-328086",
@@ -29231,7 +29291,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -29248,7 +29308,7 @@
"validation_mode": ""
},
"R-32981": {
- "description": "The xNF **MUST** support ONAP Controller's ``ConfigBackup`` command.",
+ "description": "The xNF **MUST** support APPC ``ConfigBackup`` command.",
"full_title": "",
"hide_links": "",
"id": "R-32981",
@@ -29260,7 +29320,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -29272,7 +29332,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -29346,7 +29406,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -29487,7 +29547,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -29517,7 +29577,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -29787,7 +29847,7 @@
"validation_mode": ""
},
"R-35401": {
- "description": "The xNF **MUST** support SSH and allow SSH access by the\nAnsible server for the endpoint VM(s) and comply with the Network\nCloud Service Provider guidelines for authentication and access.",
+ "description": "The xNF **MUST** support SSH and allow SSH access by the\nAnsible server to the endpoint VM(s) and comply with the Network\nCloud Service Provider guidelines for authentication and access.",
"full_title": "",
"hide_links": "",
"id": "R-35401",
@@ -29799,7 +29859,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -29812,7 +29872,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -30393,7 +30453,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -30703,7 +30763,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -31062,7 +31122,7 @@
"validation_mode": ""
},
"R-41430": {
- "description": "The xNF **MUST** support ONAP Controller's ``HealthCheck`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``HealthCheck`` command.",
"full_title": "",
"hide_links": "",
"id": "R-41430",
@@ -31074,7 +31134,7 @@
"section_name": "HealthCheck and Failure Related Commands",
"sections": [
"HealthCheck and Failure Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -31086,7 +31146,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -31160,7 +31220,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -31433,7 +31493,7 @@
"validation_mode": ""
},
"R-43253": {
- "description": "The xNF **MUST** use playbooks designed to allow Ansible\nServer to infer failure or success based on the \"PLAY_RECAP\" capability.\n\nNote: There are cases where playbooks need to interpret results\nof a task and then determine success or failure and return result\naccordingly (failure for failed tasks).",
+ "description": "The xNF **MUST** use playbooks designed to allow Ansible\nServer to infer failure or success based on the \"PLAY_RECAP\" capability.\n\n**Note**: There are cases where playbooks need to interpret results\nof a task and then determine success or failure and return result\naccordingly (failure for failed tasks).",
"full_title": "",
"hide_links": "",
"id": "R-43253",
@@ -31445,7 +31505,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -31520,7 +31580,7 @@
"validation_mode": ""
},
"R-43353": {
- "description": "The xNF **MUST** return control from Ansible Playbooks only\nafter tasks are fully complete, signaling that the playbook completed\nall tasks. When starting services, return control only after all services\nare up. This is critical for workflows where the next steps are dependent\non prior tasks being fully completed.",
+ "description": "The xNF **MUST** return control from Ansible Playbooks only after all\ntasks performed by playbook are fully complete, signaling that the\nplaybook completed all tasks. When starting services, return control\nonly after all services are up. This is critical for workflows where\nthe next steps are dependent on prior tasks being fully completed.",
"full_title": "",
"hide_links": "",
"id": "R-43353",
@@ -31532,7 +31592,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -31545,7 +31605,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -31706,7 +31766,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -31810,7 +31870,7 @@
"validation_mode": ""
},
"R-44281": {
- "description": "The xNF **MUST** implement the protocol operation:\n**edit-config(target, default-operation, test-option, error-option,\nconfig)** - Edit the target configuration datastore by merging,\nreplacing, creating, or deleting new config elements.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``edit-config(target, default-operation, test-option, error-option,\nconfig)`` - Edit the target configuration data store by merging,\nreplacing, creating, or deleting new config elements.",
"full_title": "",
"hide_links": "",
"id": "R-44281",
@@ -31822,7 +31882,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -32036,6 +32096,36 @@
"validated_by": "",
"validation_mode": "static"
},
+ "R-45197": {
+ "description": "The xNF **MUST** define the \"from=\" clause to provide the list of IP\naddresses of the Ansible Servers in the Cluster, separated by coma, to\nrestrict use of the SSH key pair to elements that are part of the Ansible\nCluster owner of the issued and assigned mechanized user ID.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-45197",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-45602": {
"description": "If a VNF's Port is attached to a network (internal or external)\nand the port's IP addresses are cloud assigned by OpenStack's DHCP\nService, the ``OS::Neutron::Port`` Resource's\n\n* property ``fixed_ips`` map property ``ip_address`` **MUST NOT** be used\n* property ``fixed_ips`` map property ``subnet``\n **MAY** be used",
"full_title": "",
@@ -32094,7 +32184,7 @@
"validation_mode": ""
},
"R-45856": {
- "description": "The xNF **MUST** support ONAP Controller's ``UpgradePostCheck`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``UpgradePostCheck`` command.",
"full_title": "",
"hide_links": "",
"id": "R-45856",
@@ -32106,7 +32196,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -32118,7 +32208,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -32559,7 +32649,7 @@
"section_name": "Chef Client Requirements",
"sections": [
"Chef Client Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -32831,7 +32921,7 @@
"validation_mode": "static"
},
"R-48247": {
- "description": "The xNF **MUST** support ONAP Controller's ``ConfigRestore`` command.",
+ "description": "The xNF **MUST** support APPC ``ConfigRestore`` command.",
"full_title": "",
"hide_links": "",
"id": "R-48247",
@@ -32843,7 +32933,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -32855,7 +32945,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -32944,7 +33034,7 @@
"validation_mode": ""
},
"R-48698": {
- "description": "The xNF **MUST** utilize information from key value pairs\nthat will be provided by the Ansible Server as \"extra-vars\" during\ninvocation to execute the desired xNF action. If the playbook requires\nfiles, they must also be supplied using the methodology detailed in\nthe Ansible Server API, unless they are bundled with playbooks, example,\ngeneric templates.",
+ "description": "The xNF **MUST** utilize information from key value pairs that will be\nprovided by the Ansible Server as \"extra-vars\" during invocation to\nexecute the desired xNF action. The \"extra-vars\" attribute-value pairs\nare passed to the Ansible Server by an APPC/SDN-C as part of the\nRest API request. If the playbook requires files, they must also be\nsupplied using the methodology detailed in the Ansible Server API, unless\nthey are bundled with playbooks, example, generic templates. Any files\ncontaining instance specific info (attribute-value pairs), not obtainable\nfrom any ONAP inventory databases or other sources, referenced and used an\ninput by playbooks, shall be provisioned (and distributed) in advance of\nuse, e.g., xNF instantiation. Recommendation is to avoid these instance\nspecific, manually created in advance of instantiation, files.",
"full_title": "",
"hide_links": "",
"id": "R-48698",
@@ -32956,7 +33046,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -32969,7 +33059,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -33100,7 +33190,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -33158,7 +33248,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -33260,7 +33350,7 @@
"validation_mode": ""
},
"R-49396": {
- "description": "The xNF **MUST** support each ONAP (APPC) xNF action\nby invocation of **one** playbook [#7.3.4]_. The playbook will be responsible\nfor executing all necessary tasks (as well as calling other playbooks)\nto complete the request.",
+ "description": "The xNF **MUST** support each APPC/SDN-C xNF action\nby invocation of **one** playbook [#7.3.4]_. The playbook will be responsible\nfor executing all necessary tasks (as well as calling other playbooks)\nto complete the request.",
"full_title": "",
"hide_links": "",
"id": "R-49396",
@@ -33272,7 +33362,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -33285,12 +33375,12 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
"R-49466": {
- "description": "The xNF **MUST** support ONAP Controller's ``UpgradeSoftware`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``UpgradeSoftware`` command.",
"full_title": "",
"hide_links": "",
"id": "R-49466",
@@ -33302,7 +33392,37 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "casablanca",
+ "validated_by": "",
+ "validation_mode": ""
+ },
+ "R-49751": {
+ "description": "The xNF **MUST** support Ansible playbooks that are compatible with\nAnsible version 2.6 or later.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-49751",
+ "impacts": "",
+ "introduced": "",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Playbook Requirements",
+ "sections": [
+ "Ansible Playbook Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
"Configuration Management"
],
"status": null,
@@ -33318,6 +33438,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-49911": {
+ "description": "The xNF provider **MUST** assign a new point release to the updated\nplaybook set. The functionality of a new playbook set must be tested before\nit is deployed to the production.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-49911",
+ "impacts": "",
+ "introduced": "",
+ "keyword": "SHOULD",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Playbook Requirements",
+ "sections": [
+ "Ansible Playbook Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "casablanca",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-50011": {
"description": "A VNF's Heat Orchestration Template's ``OS::Heat::ResourceGroup``\nproperty ``count`` **MUST** be enumerated in the VNF's\nHeat Orchestration Template's Environment File and **MUST** be\nassigned a value.",
"full_title": "",
@@ -33349,7 +33499,7 @@
"validation_mode": "static"
},
"R-50252": {
- "description": "The xNF **MUST** write to a specific one text files that\nwill be retrieved and made available by the Ansible Server if, as part\nof a xNF action (e.g., audit), a playbook is required to return any\nxNF information. The text files must be written in the same directory as\nthe one from which the playbook is being executed. A text file must be\ncreated for the xNF playbook run targets/affects, with the name\n'<VNFname>_results.txt' into which any desired output from each\nrespective VM/xNF must be written.",
+ "description": "The xNF **MUST** write to a response file in JSON format that will be\nretrieved and made available by the Ansible Server if, as part of a xNF\naction (e.g., audit), a playbook is required to return any xNF\ninformation/response. The text files must be written in the main playbook\nhome directory, in JSON format. The JSON file must be created for the xNF\nwith the name '<xNF name>_results.txt'. All playbook output results, for\nall xNF VMs, to be provided as a response to the request, must be written\nto this response file.",
"full_title": "",
"hide_links": "",
"id": "R-50252",
@@ -33361,7 +33511,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -33374,7 +33524,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -33521,7 +33671,7 @@
"validation_mode": "static"
},
"R-51442": {
- "description": "The xNF **SHOULD** use playbooks that are designed to\nautomatically 'rollback' to the original state in case of any errors\nfor actions that change state of the xNF (e.g., configure).\n\n Note: In case rollback at the playbook level is not supported or\n possible, the xNF provider shall provide alternative locking\n mechanism (e.g., for a small xNF the rollback mechanism may rely\n on workflow to terminate and re-instantiate VNF VMs and then re-run\n playbook(s)). Backing up updated files also recommended to support\n rollback when soft rollback is feasible.",
+ "description": "The xNF **SHOULD** use playbooks that are designed to\nautomatically 'rollback' to the original state in case of any errors\nfor actions that change state of the xNF (e.g., configure).\n\n**Note**: In case rollback at the playbook level is not supported or\npossible, the xNF provider shall provide alternative rollback\nmechanism (e.g., for a small xNF the rollback mechanism may rely\non workflow to terminate and re-instantiate VNF VMs and then re-run\nplaybook(s)). Backing up updated files is also recommended to support\nrollback when soft rollback is feasible.",
"full_title": "",
"hide_links": "",
"id": "R-51442",
@@ -33533,7 +33683,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -33546,7 +33696,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -33790,7 +33940,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -33849,7 +33999,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -33993,7 +34143,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -34080,7 +34230,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -34519,7 +34669,7 @@
"validation_mode": "static"
},
"R-56385": {
- "description": "The xNF **MUST** support ONAP Controller's ``Audit`` command.",
+ "description": "The xNF **MUST** support APPC ``Audit`` command.",
"full_title": "",
"hide_links": "",
"id": "R-56385",
@@ -34531,7 +34681,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -34543,7 +34693,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -34940,7 +35090,7 @@
"validation_mode": ""
},
"R-58301": {
- "description": "The xNF **SHOULD NOT** use playbooks that make requests to\nCloud resources e.g. Openstack (nova, neutron, glance, heat, etc.);\ntherefore, there is no use for Cloud specific variables like Openstack\nUUIDs in Ansible Playbooks.\n\nRationale: Flows that require interactions with Cloud services e.g.\nOpenstack shall rely on workflows run by an Orchestrator\n(Change Management) or other capability (such as a control loop or\nOperations GUI) outside Ansible Server which can be executed by a\nController such as APPC. There are policies, as part of Control Loop\nmodels, that send remediation action requests to APPC; these are\ntriggered as a response to an event or correlated events published\nto Event Bus.",
+ "description": "The xNF **SHOULD NOT** use playbooks that make requests to\nCloud resources e.g. Openstack (nova, neutron, glance, heat, etc.);\ntherefore, there is no use for Cloud specific variables like Openstack\nUUIDs in Ansible Playbook related artifacts.\n\n**Rationale**: Flows that require interactions with Cloud services e.g.\nOpenstack shall rely on workflows run by an Orchestrator\n(Change Management) or other capability (such as a control loop or\nOperations GUI) outside Ansible Server which can be executed by a\nAPPC/SDN-C. There are policies, as part of Control Loop\nmodels, that send remediation action requests to an APPC/SDN-C; these\nare triggered as a response to an event or correlated events published\nto Event Bus.",
"full_title": "",
"hide_links": "",
"id": "R-58301",
@@ -34952,7 +35102,7 @@
"section_name": "Ansible Playbook Requirements",
"sections": [
"Ansible Playbook Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -34965,7 +35115,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -34982,7 +35132,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -35291,7 +35441,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -35366,7 +35516,7 @@
"validation_mode": "static"
},
"R-60106": {
- "description": "The xNF **MUST** implement the protocol operation:\n**get(filter)** - Retrieve (a filtered subset of) the running\nconfiguration and device state information. This should include\nthe list of xNF supported schemas.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``get(filter)`` - Retrieve (a filtered subset of) the running\nconfiguration and device state information. This should include\nthe list of xNF supported schemas.",
"full_title": "",
"hide_links": "",
"id": "R-60106",
@@ -35378,7 +35528,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -35408,7 +35558,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -35493,7 +35643,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -35608,7 +35758,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -35977,7 +36127,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -36007,7 +36157,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -36335,7 +36485,7 @@
"validation_mode": ""
},
"R-65641": {
- "description": "The xNF **MUST** support ONAP Controller's ``UpgradeBackOut`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``UpgradeBackOut`` command.",
"full_title": "",
"hide_links": "",
"id": "R-65641",
@@ -36347,7 +36497,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -36359,7 +36509,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -36376,7 +36526,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -36518,7 +36668,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -36548,7 +36698,7 @@
"section_name": "Chef Client Requirements",
"sections": [
"Chef Client Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -36565,6 +36715,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-67124": {
+ "description": "The xNF **MUST** provide Ansible playbooks that are designed to run using\nan inventory hosts file in a supported format; with group names matching\nVNFC 3-character string adding \"vip\" for groups with virtual IP addresses\nshared by multiple VMs as seen in examples provided in Appendix.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-67124",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-67231": {
"description": "A VNF's Heat Orchestration template's Environment File's\n**MUST NOT** contain the ``resource_registry:`` section.",
"full_title": "",
@@ -36889,7 +37069,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -37004,7 +37184,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -37474,7 +37654,7 @@
"validation_mode": ""
},
"R-70496": {
- "description": "The xNF **MUST** implement the protocol operation:\n**commit(confirmed, confirm-timeout)** - Commit candidate\nconfiguration data store to the running configuration.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``commit(confirmed, confirm-timeout)`` - Commit candidate\nconfiguration data store to the running configuration.",
"full_title": "",
"hide_links": "",
"id": "R-70496",
@@ -37486,7 +37666,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -37799,7 +37979,7 @@
"section_name": "Chef Client Requirements",
"sections": [
"Chef Client Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -38014,6 +38194,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-73459": {
+ "description": "The xNF **MUST** provide the ability to include a \"from=\" clause in SSH\npublic keys associated with mechanized user IDs created for an Ansible\nServer cluster to use for xNF VM authentication.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-73459",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-73468": {
"description": "The xNF **MUST** allow the NETCONF server connection\nparameters to be configurable during virtual machine instantiation\nthrough Heat templates where SSH keys, usernames, passwords, SSH\nservice and SSH port numbers are Heat template parameters.",
"full_title": "",
@@ -38027,7 +38237,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -38846,7 +39056,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -38876,7 +39086,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -38992,7 +39202,7 @@
"section_name": "Chef Client Requirements",
"sections": [
"Chef Client Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -39277,7 +39487,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -39523,7 +39733,7 @@
"validation_mode": ""
},
"R-82018": {
- "description": "The xNF **MUST** load the Ansible Server SSH public key onto xNF\nVM(s) as part of instantiation. This will allow the Ansible Server\nto authenticate to perform post-instantiation configuration without\nmanual intervention and without requiring specific xNF login IDs and\npasswords.\n\nCAUTION: For VNFs configured using Ansible, to eliminate the need\nfor manual steps, post-instantiation and pre-configuration, to\nupload of SSH public keys, SSH public keys loaded during (heat)\ninstantiation shall be preserved and not removed by (heat) embedded\n(userdata) scripts.",
+ "description": "The xNF **MUST** load the Ansible Server SSH public key onto xNF\nVM(s) /root/.ssh/authorized_keys as part of instantiation. Alternative,\nis for Ansible Server SSH public key to be loaded onto xNF VM(s) under\n/home/<Mechanized user ID>/.ssh/authorized_keys as part of instantiation,\nwhen a Mechanized user ID is created during instantiation, and Configure\nand all playbooks are designed to use a mechanized user ID only for\nauthentication (never using root authentication during Configure playbook\nrun). This will allow the Ansible Server to authenticate to perform\npost-instantiation configuration without manual intervention and without\nrequiring specific xNF login IDs and passwords.\n\n*CAUTION*: For xNFs configured using Ansible, to eliminate the need\nfor manual steps, post-instantiation and pre-configuration, to\nupload of SSH public keys, SSH public keys loaded during (heat)\ninstantiation shall be preserved and not removed by (heat) embedded\n(userdata) scripts.",
"full_title": "",
"hide_links": "",
"id": "R-82018",
@@ -39535,7 +39745,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -39548,7 +39758,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -39775,7 +39985,7 @@
"validation_mode": "static"
},
"R-82811": {
- "description": "The xNF **MUST** support ONAP Controller's ``StartApplication`` command.",
+ "description": "The xNF **MUST** support APPC ``StartApplication`` command.",
"full_title": "",
"hide_links": "",
"id": "R-82811",
@@ -39787,7 +39997,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -39799,7 +40009,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -39832,7 +40042,7 @@
"validation_mode": "static"
},
"R-83146": {
- "description": "The xNF **MUST** support ONAP Controller's ``StopApplication`` command.",
+ "description": "The xNF **MUST** support APPC ``StopApplication`` command.",
"full_title": "",
"hide_links": "",
"id": "R-83146",
@@ -39844,7 +40054,7 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -39856,7 +40066,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -40043,7 +40253,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -40073,7 +40283,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -41226,7 +41436,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -41312,7 +41522,7 @@
"section_name": "Configuration Management",
"sections": [
"Configuration Management",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -41330,7 +41540,7 @@
"validation_mode": ""
},
"R-88031": {
- "description": "The xNF **SHOULD** implement the protocol operation:\n``delete-config(target) -`` Delete the named configuration\ndata store target.",
+ "description": "The xNF **SHOULD** implement the protocol operation:\n``delete-config(target)`` - Delete the named configuration\ndata store target.",
"full_title": "",
"hide_links": "",
"id": "R-88031",
@@ -41342,7 +41552,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -41531,7 +41741,7 @@
"validation_mode": "static"
},
"R-88899": {
- "description": "The xNF **MUST** support simultaneous ``<commit>`` operations\nwithin the context of this locking requirements framework.",
+ "description": "The xNF **MUST** support simultaneous <commit> operations\nwithin the context of this locking requirements framework.",
"full_title": "",
"hide_links": "",
"id": "R-88899",
@@ -41543,7 +41753,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -41729,7 +41939,7 @@
"validation_mode": "static"
},
"R-90007": {
- "description": "The xNF **MUST** implement the protocol operation:\n**close-session()**- Gracefully close the current session.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``close-session()`` - Gracefully close the current session.",
"full_title": "",
"hide_links": "",
"id": "R-90007",
@@ -41741,7 +41951,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -42131,7 +42341,7 @@
"validation_mode": ""
},
"R-91745": {
- "description": "The xNF **MUST** update the Ansible Server and other entities\nstoring and using the SSH keys for authentication when the SSH\nkeys used by Ansible are regenerated/updated.\n\nNote: Ansible Server itself may be used to upload new SSH public\nkeys onto supported VNFs.",
+ "description": "The xNF **MUST** update the Ansible Server and other entities\nstoring and using the SSH keys for authentication when the SSH\nkeys used by Ansible are regenerated/updated.\n\n**Note**: Ansible Server itself may be used to upload new SSH public\nkeys onto supported xNFs.",
"full_title": "",
"hide_links": "",
"id": "R-91745",
@@ -42143,7 +42353,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -42302,7 +42512,7 @@
"validation_mode": "static"
},
"R-92866": {
- "description": "The xNF **MUST** include as part of post-instantiation configuration\ndone by Ansible Playbooks the removal/update of the SSH public key from\n/root/.ssh/authorized_keys, and update of SSH keys loaded through\ninstantiation to support Ansible. This may include download and install of\nnew SSH keys and new mechanized IDs.",
+ "description": "The xNF **MUST** include as part of post-instantiation configuration\ndone by Ansible Playbooks the removal/update of the SSH public key from\n/root/.ssh/authorized_keys, and update of SSH keys loaded through\ninstantiation to support Ansible. This may include creating Mechanized user\nID(s) used by the Ansible Server(s) on VNF VM(s) and uploading and\ninstalling new SSH keys used by the mechanized use ID(s).",
"full_title": "",
"hide_links": "",
"id": "R-92866",
@@ -42314,7 +42524,7 @@
"section_name": "Ansible Client Requirements",
"sections": [
"Ansible Client Requirements",
- "VNF Configuration via Ansible Requirements",
+ "xNF Configuration via Ansible Requirements",
"Ansible Standards and Capabilities",
"Configuration Management"
],
@@ -42327,7 +42537,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -42513,7 +42723,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -42587,7 +42797,7 @@
"validation_mode": ""
},
"R-94084": {
- "description": "The xNF **MUST** support ONAP Controller's ``ConfigScaleOut`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``ConfigScaleOut`` command.",
"full_title": "",
"hide_links": "",
"id": "R-94084",
@@ -42599,7 +42809,7 @@
"section_name": "Configuration Commands",
"sections": [
"Configuration Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
"Configuration Management"
],
"status": null,
@@ -42611,7 +42821,7 @@
"title": "",
"title_from_content": "",
"type_name": "Requirement",
- "updated": "",
+ "updated": "casablanca",
"validated_by": "",
"validation_mode": ""
},
@@ -42672,6 +42882,36 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-94567": {
+ "description": "The xNF **MUST** provide Ansible playbooks that are designed to run using\nan inventory hosts file in a supported format with only IP addresses or\nIP addresses and VM/xNF names.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-94567",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-94669": {
"description": "If a VNF has one IPv6 OAM Management IP Address and the\nIP Address needs to be inventoried in ONAP's A&AI\ndatabase, an output parameter **MUST** be declared in only one of the\nVNF's Heat Orchestration Templates and the parameter **MUST** be named\n``oam_management_v6_address``.",
"full_title": "",
@@ -42883,7 +43123,7 @@
"section_name": "Configuration Management",
"sections": [
"Configuration Management",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -42987,7 +43227,7 @@
"validation_mode": "static"
},
"R-96554": {
- "description": "The xNF **MUST** implement the protocol operation:\n``unlock(target)`` - Unlock the configuration datastore target.",
+ "description": "The xNF **MUST** implement the protocol operation:\n``unlock(target)`` - Unlock the configuration data store target.",
"full_title": "",
"hide_links": "",
"id": "R-96554",
@@ -42999,7 +43239,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -43156,7 +43396,7 @@
"validation_mode": ""
},
"R-97343": {
- "description": "The xNF **MUST** support ONAP Controller's ``UpgradeBackup`` command.",
+ "description": "The xNF **MUST** support APPC/SDN-C ``UpgradeBackup`` command.",
"full_title": "",
"hide_links": "",
"id": "R-97343",
@@ -43168,7 +43408,37 @@
"section_name": "Lifecycle Management Related Commands",
"sections": [
"Lifecycle Management Related Commands",
- "Controller Interactions With VNF",
+ "Controller Interactions With xNF",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "casablanca",
+ "validated_by": "",
+ "validation_mode": ""
+ },
+ "R-97345": {
+ "description": "The xNF **MUST** permit authentication, using root account, only right\nafter instantiation and until post-instantiation configuration is\ncompleted.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-97345",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
"Configuration Management"
],
"status": null,
@@ -43212,8 +43482,38 @@
"validated_by": "",
"validation_mode": ""
},
+ "R-97451": {
+ "description": "The xNF **MUST** provide the ability to remove root access once\npost-instantiation configuration (Configure) is completed.",
+ "full_title": "",
+ "hide_links": "",
+ "id": "R-97451",
+ "impacts": "",
+ "introduced": "casablanca",
+ "keyword": "MUST",
+ "links": [],
+ "notes": "",
+ "section_name": "Ansible Client Requirements",
+ "sections": [
+ "Ansible Client Requirements",
+ "xNF Configuration via Ansible Requirements",
+ "Ansible Standards and Capabilities",
+ "Configuration Management"
+ ],
+ "status": null,
+ "tags": [],
+ "target": "XNF",
+ "test": "",
+ "test_case": "",
+ "test_file": "",
+ "title": "",
+ "title_from_content": "",
+ "type_name": "Requirement",
+ "updated": "",
+ "validated_by": "",
+ "validation_mode": ""
+ },
"R-97529": {
- "description": "The xNF **SHOULD** implement the protocol operation:\n``get-schema(identifier, version, format) -`` Retrieve the YANG schema.",
+ "description": "The xNF **SHOULD** implement the protocol operation:\n``get-schema(identifier, version, format)`` - Retrieve the YANG schema.",
"full_title": "",
"hide_links": "",
"id": "R-97529",
@@ -43225,7 +43525,7 @@
"section_name": "NETCONF Server Requirements",
"sections": [
"NETCONF Server Requirements",
- "VNF Configuration via NETCONF Requirements",
+ "xNF Configuration via NETCONF Requirements",
"NETCONF Standards and Capabilities",
"Configuration Management"
],
@@ -43648,7 +43948,7 @@
"section_name": "Chef Roles/Requirements",
"sections": [
"Chef Roles/Requirements",
- "VNF Configuration via Chef Requirements",
+ "xNF Configuration via Chef Requirements",
"Chef Standards and Capabilities",
"Configuration Management"
],
@@ -43973,7 +44273,7 @@
"validation_mode": "static"
}
},
- "needs_amount": 777
+ "needs_amount": 787
}
}
} \ No newline at end of file