From 1a1102e8b173d7d34adbc7ab4c4fd64300009709 Mon Sep 17 00:00:00 2001 From: hp1256 Date: Mon, 6 Nov 2017 05:19:16 -0800 Subject: [PATCH] VNFRQTS -Requirements Updated ch7 and 8 VNFRQTS -Requirements Updated chapter 7 and 8 to reflect Amsterdam release Change-Id: I165908d4aec4fcbe9078788187308ef857b62087 Issue-ID:VNFRQTS-131 Signed-off-by: hp1256 --- docs/Chapter7.rst | 786 ++++++++++++++++++++------------- docs/Chapter8.rst | 613 +++++++++++++++++++++++-- docs/Data_Model_For_Event_Records.png | Bin 79667 -> 61638 bytes docs/Protocol_Buffers_Driven_Model.png | Bin 0 -> 14280 bytes docs/VES_JSON_Driven_Model.png | Bin 0 -> 9218 bytes docs/YANG_Driven_Model.png | Bin 0 -> 13313 bytes 6 files changed, 1047 insertions(+), 352 deletions(-) create mode 100644 docs/Protocol_Buffers_Driven_Model.png create mode 100644 docs/VES_JSON_Driven_Model.png create mode 100644 docs/YANG_Driven_Model.png diff --git a/docs/Chapter7.rst b/docs/Chapter7.rst index d10b4e0..90ca743 100644 --- a/docs/Chapter7.rst +++ b/docs/Chapter7.rst @@ -69,8 +69,6 @@ and GS NFV IFA011 V0.3.0 (2015-10) - Network Functions Virtualization * R-75608 The VNF Vendor **MUST** provide playbooks to be loaded on the appropriate Ansible Server. * R-16777 The VNF Vendor **MUST** provide a JSON file for each supported action for the VNF. The JSON file must contain key value pairs with all relevant values populated with sample data that illustrates its usage. The fields and their description are defined in Appendix B. - Note: Ansible support in ONAP is not currently available and planned for 4Q 2017. - * R-46567 The VNF Package **MUST** include configuration scripts for boot sequence and configuration. * R-16065 The VNF Vendor **MUST** provide configurable parameters (if unable to conform to YANG model) including VNF attributes/parameters and valid values, dynamic attributes and cross parameter dependencies (e.g., customer provisioning data). @@ -254,25 +252,28 @@ NETCONF RFCs. VNF REST APIs ------------- -Healthcheck is a command for which no NETCONF support exists. Therefore, -this must be supported using a RESTful interface which we have defined. +Healthcheck is a command for which no NETCONF support exists. Therefore, this must be supported using a RESTful interface (defined in this section) or +with a Chef cookbook/Ansible playbook (defined in sections `Chef Standards and Capabilities`_ and `Ansible Standards and Capabilities`_). -The VNF via APP-C must provide a REST formatted GET RPCs to support Healthcheck -queries via the GET method over HTTP(s). +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. -The VNF via VF-C must provide REST APIs to make the configurations of -associated VNFs. +The VNF 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 vendor. **REST APIs** -* R-31809 The VNF **MUST** support the HealthCheck RPC. The HealthCheck RPC, executes a vendor-defined VNF Healthcheck over the scope of the entire VNF (e.g., if there are multiple VNFCs, then run a health check, as appropriate, for all VNFCs). It returns a 200 OK if the test completes. A JSON object is returned indicating state (healthy, unhealthy), scope identifier, time-stamp and one or more blocks containing info and fault information. If the VNF is unable to run the HealthCheck, return a standard http error code and message. +* R-31809 The VNF **MUST** support the HealthCheck RPC. The HealthCheck RPC executes a vendor-defined VNF Healthcheck over the scope of the entire VNF (e.g., if there are multiple VNFCs, then run a health check, as appropriate, for all VNFCs). It returns a 200 OK if the test completes. A JSON object is returned indicating state (healthy, unhealthy), scope identifier, time-stamp and one or more blocks containing info and fault information. If the VNF is unable to run the HealthCheck, return a standard http error code and message. Examples: -.. code-block:: python +.. code-block:: java 200 { @@ -297,16 +298,6 @@ Examples: } -**Table 5. VNF REST APIs** - -+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+ -| **Principal** | **Description** | **Type** | **ID #** | -+=================+=======================================================================================================================================================================================================================================================================================================================================================================================================+============+============+ -+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+ -| REST APIs | **/configuration** This API executes a vendor-defined VNF configuration action over the scope of the entire VNF(e.g if there are multiple VMs, then run configuration on all VMs according to the input parameters). | Must | 12200 | -| | **/configuration** returns a 201 Created if the configuration succeeds or a 4XX/5XX response if it fails. A JSON object is returned indicating the outcome of the VNF configuration including all the necessary configuration info. | | | -+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+ - Chef Standards and Capabilities ------------------------------- @@ -390,22 +381,16 @@ action request against a Chef managed VNF. unique Request Id. An example push job posted by ONAP is listed below: - { - - "command": "chef-client", - - "run\_timeout": 300, - - "nodes”: [“node1.vnf\_a.onap.com”, “node2.vnf\_a.onap.com”], - - "env": { - - “RequestId”:”8279-abcd-aksdj-19231”, - - “CallbackUrl”:”” - - }, +.. code-block:: java + { + "command": "chef-client", + "run\_timeout": 300, + "nodes”: [“node1.vnf\_a.onap.com”, “node2.vnf\_a.onap.com”], + "env": { + “RequestId”:”8279-abcd-aksdj-19231”, + “CallbackUrl”:”” + }, } 5. If CallbackCapable field in the template is not present or set to @@ -423,45 +408,102 @@ Ansible Standards and Capabilities ONAP will support configuration of VNFs via Ansible subject to the requirements and guidelines defined in this section. -Ansible allows agentless management of VMs via execution of ‘playbooks’ -over ssh. The ‘playbooks’ are a structured set of tasks which contain -all the necessary data and execution capabilities to take the necessary -action on one or more target VMs of the VNF. ONAP will utilize the -framework of an Ansible Server that will host and invoke playbooks to -manage VNFs that support Ansible. +Ansible allows agentless management of VNFs/VMs/VNFCs via execution of ‘playbooks’ +over ssh. The ‘playbooks’ are a structured set of tasks which contain all the necessary +data 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 and run playbooks to manage VNFs that support Ansible. **VNF Configuration via Ansible Requirements** **Ansible Client Requirements** * R-32217 The VNF **MUST** have routable FQDNs that are reachable via the Ansible Server for the endpoints (VMs) of a VNF on which playbooks will be executed. ONAP will initiate requests to the Ansible Server for invocation of playbooks against these end points [3]_. -* R-98929 The VNF **MAY** have a single endpoint. * R-54373 The VNF **MUST** have Python >= 2.7 on the endpoint VM(s) of a VNF on which an Ansible playbook will be executed. -* R-35401 The VNF **MUST** must support SSH and allow SSH access to the Ansible server for the endpoint VM(s) and comply with the Network Cloud Service Provider guidelines for authentication and access. +* R-35401 The VNF **MUST** support SSH and allow SSH access to the Ansible server for the endpoint VM(s) and comply with the Network Cloud Service Provider guidelines for authentication and access. +* R-NNNNN The VNF **SHOULD** load the SSH key onto VNF 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 VNF login IDs and passwords. + + CAUTION: For VNFs configured using Ansible, to eliminate the need for manual steps, post-instantiation and pre-configuration, to upload of SSH keys, SSH keys loaded during (heat) instantiation shall be preserved and not removed by (heat) embedded scripts. + +* R-NNNNN The VNF **MUST** include as part of post-instantiation configuration done by Ansible Playbooks the removal/update of SSH keys loaded through instantiation to support Ansible. This may include download and install of new SSH keys. +* R-NNNNN The VNF **MUST** update the Ansible Server and other entities storing and using the SSH key for authentication when the SSH key used by Ansible is regenerated/updated. **Ansible Playbook Requirements** 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. -* R-40293 The VNF **MUST** make available (or load on VNF Ansible Server) playbooks that conform to the ONAP requirement. -* R-49396 The VNF **MUST** support each VNF action by invocation of **one** playbook [4]_. The playbook will be responsible for executing all necessary tasks (as well as calling other playbooks) to complete the request. +* R-40293 The VNF **MUST** make available playbooks that conform to the ONAP requirement. +* R-49396 The VNF **MUST** support each VNF action be supported by ONAP (APPC) by invocation of **one** playbook [4]_. The playbook will be responsible for executing all necessary tasks (as well as calling other playbooks) to complete the request. * R-33280 The VNF **MUST NOT** use any instance specific parameters in a playbook. -* R-48698 The VNF **MUST** utilize information from key value pairs that will be provided by the Ansible Server as extra-vars during invocation to execute the desired VNF action. If the playbook requires files, they must also be supplied using the methodology detailed in the Ansible Server API. +* R-48698 The VNF **MUST** utilize information from key value pairs that will be provided by the Ansible Server as extra-vars during invocation to execute the desired VNF action. If the playbook requires files, they must also be supplied using the methodology detailed in the Ansible Server API. The Ansible Server will determine if a playbook invoked to execute a VNF 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 has no unreachable hosts and no failed tasks. Otherwise, the playbook will be considered to have failed. * R-43253 The VNF **MUST** use playbooks designed to allow Ansible Server to infer failure or success based on the “PLAY_RECAP” capability. -* R-50252 The VNF **MUST** write to a specific set of text files that will be retrieved and made available by the Ansible Server If, as part of a VNF action (e.g., audit), a playbook is required to return any VNF information. +* R-50252 The VNF **MUST** write to a specific set of text files that will be retrieved and made available by the Ansible Server if, as part of a VNF action (e.g., audit), a playbook is required to return any VNF 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 each host the playbook run targets/affects, with the name ‘_results.txt’ into which any desired output from each respective VM/VNF must be written. * R-51442 The VNF **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 VNF (e.g., configure). + NOTE: In case rollback at the playbook level is not supported or possible, vendor shall provide alternative locking mechanism (e.g., for a small VNF 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. + +* R-NNNNN The VNF **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. + + Rationale: Flows that require interactions with Cloud services e.g. Openstack shall rely on workflows run by an Orchestrator 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 to Event Bus. + +* R-NNNNN The VNF **SHOULD** use the Ansible backup feature 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 changes when needed. +* R-NNNNN The VNF **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. + + 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. + + 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 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 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 using IP address or VM name followed by “_results.txt (_results.txt) to indicate health-check was executed and completed successfully, example: 1xx.2yy.zzz.105_results.txt, with the following contents: + + "status”:"healthy” + + Example: + + $ cat 1xx.2yy.zzz.105_results.txt + + "status”:"healthy” + + 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 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 VM, named using Playbook Name plus IP address or VM 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 tasks to verify the health of the VNF, example: 1xx.2yy.zzz.105_results.txt, with the following contents: + + "status”:"unhealthy” + + Example: + + $ cat 1xx.2yy.zzz.105_results.txt + + "status”:"unhealthy” + + See `VNF REST APIs`_ for additional details on HealthCheck. + +ONAP Controller / Ansible API Usage +----------------------------------- + +This section outlines the workflow that ONAP Controller invokes when it receives an action request against an Ansible managed VNF. + + #. 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 values (such as an Id, NodeList, and EnvParameters) from either information in the request or data obtained from other 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 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. + + ONAP Controller APIs and Behavior --------------------------------- -ONAP Controllers support the following operations which act directly -upon the VNF. Most of these utilize the NETCONF interface. There are -additional commands in use but these either act internally on Controller -itself or depend upon network cloud components for implementation. Those -actions do not put any special requirement on the VNF provider. +ONAP Controllers such as APPC expose a northbound API to clients which offer a set of commands. The following commands are expected to be supported +on all VNF’s if applicable, either directly (via the Netconf interface) or indirectly (via a Chef or Ansible server). There are additional commands +offered to northbound clients that are not listed here, 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 following table summarizes how the VNF must act in response to commands from ONAP. @@ -487,17 +529,17 @@ Table 8. ONAP Controller APIs and NETCONF Commands | | | | | ConfigModify | | | +---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Health | Executes a VNF health check and returns the result. A health check is VNF-specific. | The ONAP health check interface is defined over REST and requires the target VNF to expose a standardized HTTP(S) interface for that purpose. See Section 8.c VNF REST APIs. | +| Health | Executes a VNF health check and returns the result. A health check is VNF-specific. | This command has no existing NETCONF RPC action. It must be supported either by REST (see `VNF REST APIs`_) or using Ansible or Chef. | | | | | | Check | | | +---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| StartApplication, | ONAP requests application to be started or stopped on the VNF or VNFC. These actions do not need to be supported if (1) the application starts automatically after Configure or if the VM’s are started and (2) the application gracefully shuts down if the VM’s are stopped. | These commands have no specific NETCONF RPC action. | +| StartApplication, | ONAP requests application to be started or stopped on the VNF. These actions do not need to be supported if (1) the application starts automatically after Configure or if the VM’s are started and (2) the application gracefully shuts down if the VM’s are stopped. | These commands have no specific NETCONF RPC action. | | | | | -| StopApplication | | They can be supported using Ansible or Chef (see Table 9 below). | +| StopApplication | | If applicable, these commands must be supported using Ansible or Chef (see Table 9 below). | +---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| SoftwareUpload, | Upgrades the target VNF to a new version without interrupting VNF operation. | These commands have no specific NETCONF RPC action. | +| ConfigBackup, | ONAP requests the VNF configuration parameters to be backed up or restored (replacing existing configuration parameters on the VNF). | These commands have no specific NETCONF RPC action. | | | | | -| LiveUpgrade | | They can be supported using Ansible or Chef (see Table 9 below). | +| ConfigRestore | | They can be supported using Ansible or Chef (see Table 9 below). | +---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Table 9 lists the required Chef and Ansible support for commands from @@ -505,198 +547,105 @@ ONAP. Table 9. ONAP Controller APIs and Chef/Ansible Support -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Action** | **Chef** | **Ansible** | -+=====================+==================================================================================================================================================================================================================================================================================================+=========================================================================================================================================================================================================================================================+ -| Action | Not needed. ActionStatus is managed internally by the ONAP controller. | Not needed. ActionStatus is managed internally by the ONAP controller. | -| | | | -| Status | | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Audit, Sync | VNF Vendor must provide any necessary roles, cookbooks, recipes to retrieve the running configuration from a VNF and place it in the respective Node Objects ‘PushJobOutput’ attribute of all nodes in NodeList when triggered by a chef-client run. | VNF Vendor must provide an Ansible playbook to retrieve the running configuration from a VNF and place the output on the Ansible server in a manner aligned with playbook requirements listed in this document. | -| | | | -| | The JSON file for this VNF action is required to set “PushJobFlag” to “True” and “GetOutputFlag” to “True”. The “Node” JSON dictionary must have the run list populated with the necessary sequence of roles, cookbooks, recipes. | The PlaybookName must be provided in the JSON file. | -| | | | -| | The Environment and Node values should contain all appropriate configuration attributes. | NodeList must list FQDNs of an example VNF on which to execute playbook. | -| | | | -| | NodeList must list sample FQDNs that are required to conduct a chef-client run for this VNF Action. | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Lock, | Not needed. VNF locking and unlocking is managed internally by the ONAP controller. | Not needed. VNF locking and unlocking is managed internally by the ONAP controller. | -| | | | -| Unlock, | | | -| | | | -| CheckLock | | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Configure, | VNF Vendor must provide any necessary roles, cookbooks, recipes to apply configuration attributes to the VNF when triggered by a chef-client run. All configurable attributes must be obtained from the Environment and Node objects on the Chef Server. | VNF Vendor must provide an Ansible playbook that can configure the VNF with parameters supplied by the Ansible Server. | -| | | | -| ConfigModify | The JSON file for this VNF action should include all configurable attributes in the Environment and/or Node JSON dictionary. | The PlaybookName must be provided in the JSON file. | -| | | | -| | The “PushJobFlag” must be set to “True”. | The “EnvParameters” and/or “FileParameters” field values should be provided and contain all configurable parameters for the VNF. | -| | | | -| | The “Node” JSON dictionary must have the run list populated with necessary sequence of roles, cookbooks, recipes. This action is not expected to return an output. | NodeList must list FQDNs of an example VNF on which to execute playbook. | -| | | | -| | “GetOutputFlag” must be set to “False”. | | -| | | | -| | NodeList must list sample FQDNs that are required to conduct a chef-client run for this VNF Action. | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Health | The ONAP health check interface is defined over REST and requires the target VNF to expose a standardized HTTP(S) interface for that purpose. See Section 8.c VNF REST APIs. | The ONAP health check interface is defined over REST and requires the target VNF to expose a standardized HTTP(S) interface for that purpose. See Section 8.c VNF REST APIs. | -| | | | -| Check | | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| StartApplication, | VNF Vendor must provide roles, cookbooks, recipes to start an application on the VNF when triggered by a chef-client run. If application does not start, the run must fail or raise an exception. If application is already started, or starts successfully, the run must finish successfully. | VNF Vendor must provide an Ansible playbook to start the application on the VNF. If application does not start, the playbook must indicate failure. If application is already started, or starts successfully, the playbook must finish successfully. | -| | | | -| StopApplication | For StopApplication, the application must be stopped gracefully (no loss of traffic). | For StopApplication, the application must be stopped gracefully (no loss of traffic). | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| SoftwareUpload, | VNF Vendor must provide any necessary roles, cookbooks, recipes to apply a software upgrade to the VNF when triggered by a chef-client run. | VNF Vendor must provide an Ansible playbook that can apply a software upgrade to the VNF when triggered by the Ansible server | -| | | | -| LiveUpgrade | | | -+---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Action** | **Chef** | **Ansible** | ++=====================+==================================================================================================================================================================================================================================================================================================+=============================================================================================================================================================================================================================================================================================+ +| Action | Not needed. ActionStatus is managed internally by the ONAP controller. | Not needed. ActionStatus is managed internally by the ONAP controller. | +| | | | +| Status | | | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Audit, Sync | VNF Vendor must provide any necessary roles, cookbooks, recipes to retrieve the running configuration from a VNF and place it in the respective Node Objects ‘PushJobOutput’ attribute of all nodes in NodeList when triggered by a chef-client run. | VNF Vendor must provide an Ansible playbook to retrieve the running configuration from a VNF and place the output on the Ansible server in a manner aligned with playbook requirements listed in this document. | +| | | | +| | The JSON file for this VNF action is required to set “PushJobFlag” to “True” and “GetOutputFlag” to “True”. The “Node” JSON dictionary must have the run list populated with the necessary sequence of roles, cookbooks, recipes. | The PlaybookName must be provided in the JSON file. | +| | | | +| | The Environment and Node values should contain all appropriate configuration attributes. | NodeList must list FQDNs of an example VNF on which to execute playbook. | +| | | | +| | NodeList must list sample FQDNs that are required to conduct a chef-client run for this VNF Action. | | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Lock, | Not needed. VNF locking and unlocking is managed internally by the ONAP controller. | Not needed. VNF locking and unlocking is managed internally by the ONAP controller. | +| | | | +| Unlock, | | | +| | | | +| CheckLock | | | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Configure, | VNF Vendor must provide any necessary roles, cookbooks, recipes to apply configuration attributes to the VNF when triggered by a chef-client run. All configurable attributes must be obtained from the Environment and Node objects on the Chef Server. | VNF Vendor must provide an Ansible playbook that can configure the VNF with parameters supplied by the Ansible Server. | +| | | | +| ConfigModify | The JSON file for this VNF action should include all configurable attributes in the Environment and/or Node JSON dictionary. | The PlaybookName must be provided in the JSON file. | +| | | | +| | The “PushJobFlag” must be set to “True”. | The “EnvParameters” and/or “FileParameters” field values should be provided and contain all configurable parameters for the VNF. | +| | | | +| | The “Node” JSON dictionary must have the run list populated with necessary sequence of roles, cookbooks, recipes. This action is not expected to return an output. | NodeList must list FQDNs of an example VNF on which to execute playbook. | +| | | | +| | “GetOutputFlag” must be set to “False”. | | +| | | | +| | NodeList must list sample FQDNs that are required to conduct a chef-client run for this VNF Action. | | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Health | The VNF level HealthCheck run a check over the entire scope of the VNF (for more details, see `VNF REST APIs`_). It can be supported either via a REST interface or with Chef roles, cookbooks, and recipes. | The VNF level HealthCheck run a check over the entire scope of the VNF (for more details, see `VNF REST APIs`_). It can be supported either via a REST interface or with an Ansible playbook. | +| | | | +| Check | | | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| StartApplication, | VNF Vendor must provide roles, cookbooks, recipes to start an application on the VNF when triggered by a chef-client run. If application does not start, the run must fail or raise an exception. If application is already started, or starts successfully, the run must finish successfully. | VNF Vendor must provide an Ansible playbook to start the application on the VNF. If application does not start, the playbook must indicate failure. If application is already started, or starts successfully, the playbook must finish successfully. | +| | | | +| StopApplication | For StopApplication, the application must be stopped gracefully (no loss of traffic). | For StopApplication, the application must be stopped gracefully (no loss of traffic). | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ConfigBackup, | VNF Vendor must provide roles, cookbooks, recipes to backup or restore the configuration parameters on the VNF when triggered by an ECOMP request. | VNF Vendor must provide an Ansible playbook to backup or restore the configuration parameters on the VNF when triggered by an ECOMP request. | +| | | | +| | When the ConfigBackup command is executed, the current VNF configuration parameters are copied over to the Ansible or Chef server (if there is an existing set of backed up parameters, they are overwritten). When the ConfigRestore command is executed, the VNF configuration parameters | When the ConfigBackup command is executed, the current VNF configuration parameters are copied over to the Ansible or Chef server (if there is an existing set of backed up parameters, they are overwritten). When the ConfigRestore command is executed, the VNF configuration parameters | +| ConfigRestore | which are backed up on the Ansible or Chef server are applied to the VNF (replacing existing parameters). It can be assumed that the VNF is not in service when a ConfigRestore command is executed. | which are backed up on the Ansible or Chef server are applied to the VNF (replacing existing parameters). It can be assumed that the VNF is not in service when a ConfigRestore command is executed. | +| | | | +| | If either command fails, the run must fail or raise an exception. | If either command fails, the run must fail or raise an exception. | ++---------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ For information purposes, the following ONAP controller functions are planned in the future: Table 10. Planned ONAP Controller Functions -+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ConfigSave, | ConfigSave stores the VNF running configuration to a url or file using a specified name. ConfigRestore replaces the VNF running configuration with the configuration previously stored with a url or file with the specified name. | -| | | -| ConfigRestore | | -+==================+==================================================================================================================================================================================================================================================================================================================+ -| Reconfigure | If the audit fails, Reconfigure may be used to be replace the VNF running configuration using a previously uploaded configuration in the ONAP controller. | -+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ConfigStartup | ConfigStartup is used to store a running configuration to be used when a VNF is rebooted. | -+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ConfigRecovery | ConfigRecovery is used to replace the running configuration with a recovery configuration. This recovery configuration is stored in the ONAP Controller and is the configuration uploaded after instantiation. It will only be used if there is no other option to restore the VNF to a working configuration. | -+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| StatusQuery | Executes a VNF status query and returns the result. A status query is VNF-specific. | -+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - ++------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Action | Description | ++==================+=================================================================================================================================================================================+ +| UpgradeSoftware | Upgrades the target VNF to a new software version. | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| QuiesceTraffic, | Quiesces traffic (stops traffic gracefully) and resume traffic on the VNF. These commands do not stop the application processes (which is done using StopApplication). | +| ResumeTraffic | | ++------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + d. Monitoring & Management =========================== -This section addresses data collection and event processing -functionality that is directly dependent on the interfaces provided by -the VNFs’ APIs. These can be in the form of asynchronous interfaces for -event, fault notifications, and autonomous data streams. They can also -be synchronous interfaces for on-demand requests to retrieve various -performance, usage, and other event information. - -The target direction for VNF interfaces is to employ APIs that are -implemented utilizing standardized messaging and modeling protocols over -standardized transports. Migrating to a virtualized environment presents -a tremendous opportunity to eliminate the need for proprietary -interfaces for vendor equipment while removing the traditional -boundaries between Network Management Systems and Element Management -Systems. Additionally, VNFs provide the ability to instrument the -networking applications by creating event records to test and monitor -end-to-end data flow through the network, similar to what physical or -virtual probes provide without the need to insert probes at various -points in the network. The VNF vendors must be able to provide the -aforementioned set of required data directly to the ONAP collection -layer using standardized interfaces. - -Additional details can be found in the `Data Collection, Analytics, and Events (DCAE) `_ project documentation. - -Transports and Protocols Supporting Resource Interfaces -------------------------------------------------------- - -Delivery of data from VNFs to ONAP must use the same common transport -mechanisms and protocols for all VNFs. Transport mechanisms and -protocols have been selected to enable both high volume and moderate -volume datasets, as well as asynchronous and synchronous communications -over secure connections. The specified encoding provides -self-documenting content, so data fields can be changed as needs evolve, -while minimizing changes to data delivery. - -The term ‘Event Record’ is used throughout this document to represent -various forms instrumentation/telemetry made available by the VNF -including, faults, status events and various other types of VNF -measurements and logs. Headers received by themselves must be used as -heartbeat indicators. The common structure and delivery protocols for -other types of data will be given in future versions of this document as -we get more insight into data volumes and required processing. - -In the following guidelines, we provide options for encoding, -serialization and data delivery. Agreements between Service Providers -and VNF vendors shall determine which encoding, serialization and -delivery method to use for particular data sets. The selected methods -must be agreed to prior to the on-boarding of the VNF into ONAP design -studio. - -Monitoring & Management Requirements - -**VNF telemetry via standardized interface** - -* R-51910 The VNF **MUST** provide all telemetry (e.g., fault event records, syslog records, performance records etc.) to ONAP using the model, format and mechanisms described in this section. - -**Encoding and Serialization** - -* R-19624 The VNF **MUST** encode and serialize content delivered to ONAP using JSON (option 1). High-volume data is to be encoded and serialized using Avro, where Avro data format are described using JSON (option 2) [5]_. - - - JSON plain text format is preferred for moderate volume data sets (option 1), as JSON has the advantage of having well-understood simple processing and being human-readable without additional decoding. Examples of moderate volume data sets include the fault alarms and performance alerts, heartbeat messages, measurements used for VNF scaling and syslogs. - - Binary format using Avro is preferred for high volume data sets (option 2) such as mobility flow measurements and other high-volume streaming events (such as mobility signaling events or SIP signaling) or bulk data, as this will significantly reduce the volume of data to be transmitted. As of the date of this document, all events are reported using plain text JSON and REST. - - Avro content is self-documented, using a JSON schema. The JSON schema is delivered along with the data content (http://avro.apache.org/docs/current/ ). This means the presence and position of data fields can be recognized automatically, as well as the data format, definition and other attributes. Avro content can be serialized as JSON tagged text or as binary. In binary format, the JSON schema is included as a separate data block, so the content is not tagged, further compressing the volume. For streaming data, Avro will read the schema when the stream is established and apply the schema to the received content. - - In the future, we may consider support for other types of encoding & serialization (e.g., gRPC) based on industry demand. - -**Reporting Frequency** - -* R-98191 The VNF **MUST** vary the frequency that asynchronous data is delivered based on the content and how data may be aggregated or grouped together. For example, alarms and alerts are expected to be delivered as soon as they appear. In contrast, other content, such as performance measurements, KPIs or reported network signaling may have various ways of packaging and delivering content. Some content should be streamed immediately; or content may be monitored over a time interval, then packaged as collection of records and delivered as block; or data may be collected until a package of a certain size has been collected; or content may be summarized statistically over a time interval, or computed as a KPI, with the summary or KPI being delivered. - - - We expect the reporting frequency to be configurable depending on the virtual network function’s needs for management. For example, Service Provider may choose to vary the frequency of collection between normal and trouble-shooting scenarios. - - Decisions about the frequency of data reporting will affect the size of delivered data sets, recommended delivery method, and how the data will be interpreted by ONAP. However, this should not affect deserialization and decoding of the data, which will be guided by the accompanying JSON schema. - -**Addressing and Delivery Protocol** - -ONAP destinations can be addressed by URLs for RESTful data PUT. Future data sets may also be addressed by host name and port number for TCP streaming, or by host name and landing zone directory for SFTP transfer of bulk files. - -* R-88482 The VNF **SHOULD** use REST using HTTPS delivery of plain text JSON for moderate sized asynchronous data sets, and for high volume data sets when feasible. -* R-84879 The VNF **MUST** have the capability of maintaining a primary and backup DNS name (URL) for connecting to ONAP collectors, with the ability to switch between addresses based on conditions defined by policy such as time-outs, and buffering to store messages until they can be delivered. At its discretion, the service provider may choose to populate only one collector address for a VNF. In this case, the network will promptly resolve connectivity problems caused by a collector or network failure transparently to the VNF. -* R-81777 The VNF **MUST** be configured with initial address(es) to use at deployment time. After that the address(es) may be changed through ONAP-defined policies delivered from ONAP to the VNF using PUTs to a RESTful API, in the same way that other controls over data reporting will be controlled by policy. -* R-08312 The VNF **MAY** use other options which are expected to include - - - REST delivery of binary encoded data sets. - - TCP for high volume streaming asynchronous data sets and for other high volume data sets. TCP delivery can be used for either JSON or binary encoded data sets. - - SFTP for asynchronous bulk files, such as bulk files that contain large volumes of data collected over a long time interval or data collected across many VNFs. This is not preferred. Preferred is to reorganize the data into more frequent or more focused data sets, and deliver these by REST or TCP as appropriate. - - REST for synchronous data, using RESTCONF (e.g., for VNF state polling). - -* R-03070 The VNF **MUST**, by ONAP Policy, provide the ONAP addresses as data destinations for each VNF, and may be changed by Policy while the VNF is in operation. We expect the VNF to be capable of redirecting traffic to changed destinations with no loss of data, for example from one REST URL to another, or from one TCP host and port to another. - -**Asynchronous and Synchronous Data Delivery** - -* R-06924 The VNF **MUST** deliver asynchronous data as data becomes available, or according to the configured frequency. -* R-73285 The VNF **MUST** must encode the delivered data using JSON or Avro, addressed and delivered as described in the previous paragraphs. -* R-42140 The VNF **MUST** respond to data requests from ONAP as soon as those requests are received, as a synchronous response. -* R-34660 The VNF **MUST** use the RESTCONF/NETCONF framework used by the ONAP configuration subsystem for synchronous communication. -* R-86585 The VNF **MUST** use the YANG configuration models and RESTCONF (https://tools.ietf.org/html/draft-ietf-netconf-restconf-09#page-46). -* R-11240 The VNF **MUST** respond with content encoded in JSON, as described in the RESTCONF specification. This way the encoding of a synchronous communication will be consistent with Avro. -* R-70266 The VNF **MUST** respond to an ONAP request to deliver the current data for any of the record types defined in Section 8.d “Data Model for Event Records” by returning the requested record, populated with the current field values. (Currently the defined record types include the common header record, technology independent records such as Fault, Heartbeat, State Change, Syslog, and technology specific records such as Mobile Flow, Signaling and Voice Quality records. Additional record types will be added in the future as they are standardized and become available.) -* R-46290 The VNF **MUST** respond to an ONAP request to deliver granular data on device or subsystem status or performance, referencing the YANG configuration model for the VNF by returning the requested data elements. -* R-43327 The VNF **SHOULD** use “Modeling JSON text with YANG”, https://trac.tools.ietf.org/id/draft-lhotka-netmod-yang-json-00.html, If YANG models need to be translated to and from JSON. YANG configuration and content can be represented via JSON, consistent with Avro, as described in “Encoding and Serialization” section. - -**Security** - -* R-42366 The VNF **MUST** support secure connections and transports. -* R-44290 The VNF **MUST** control access to ONAP and to VNFs, and creation of connections, through secure credentials, log-on and exchange mechanisms. -* R-47597 The VNF **MUST** carry data in motion only over secure connections. -* R-68165 The VNF **MUST** encrypt any content containing Sensitive Personal Information (SPI) or certain proprietary data, in addition to applying the regular procedures for securing access and delivery. +This section addresses data collection and event processing functionality that is directly +dependent on the interfaces provided by the VNFs’ APIs. These can be in the form of asynchronous +interfaces for event, fault notifications, and autonomous data streams. They can also be +synchronous interfaces for on-demand requests to retrieve various performance, usage, +and other event information. + +The target direction for VNF interfaces is to employ APIs that are implemented +utilizing standardized messaging and modeling protocols over standardized transports. +Migrating to a virtualized environment presents a tremendous opportunity to eliminate +the need for proprietary interfaces for vendor equipment while removing the traditional +boundaries between Network Management Systems and Element Management Systems. Additionally, +VNFs provide the ability to instrument the networking applications by creating event +records to test and monitor end-to-end data flow through the network, similar to what +physical or virtual probes provide without the need to insert probes at various points +in the network. The VNF vendors must be able to provide the aforementioned set of required +data directly to the ONAP collection layer using standardized interfaces. Data Model for Event Records ---------------------------- -This section describes the data model for the collection of telemetry -data from VNFs by Service Providers (SPs) to manage VNF health and -runtime lifecycle. This data model is referred to as the VNF Event -Streaming (VES) specifications. While this document is focused on -specifying some of the records from the ONAP perspective, there may be -other external bodies using the same framework to specify additional -records. For example, OPNFV has a VES project [6]_ that is looking to -specify records for OpenStack’s internal telemetry to manage Application -(VNFs), physical and virtual infrastructure (compute, storage, network -devices), and virtual infrastructure managers (cloud controllers, SDN -controllers). Note that any configurable parameters for these data -records (e.g., frequency, granularity, policy-based configuration) will -be managed using the “Configuration” framework described in the prior -sections of this document. +This section describes the data model for the collection of telemetry data from VNFs +by Service Providers (SPs) to manage VNF health and runtime lifecycle. This data +model is referred to as the VNF Event Streaming (VES) specifications. While this +document is focused on specifying some of the records from the ONAP perspective, +there may be other external bodies using the same framework to specify additional +records. For example, OPNFV has a VES project that is looking to specify records +for OpenStack’s internal telemetry to manage Application (VNFs), physical and +virtual infrastructure (compute, storage, network devices), and virtual infrastructure +managers (cloud controllers, SDN controllers). Note that any configurable parameters +for these data records (e.g., frequency, granularity, policy-based configuration) +will be managed using the “Configuration” framework described in the prior sections +of this document. The Data Model consists of: @@ -704,26 +653,23 @@ The Data Model consists of: Technology Independent and Technology Specific records sections of the data model. -- Technology Independent Records: This version of the document - specifies the model for Fault, Heartbeat, State Change, Syslog, - Threshold Crossing Alerts, and VF Scaling\* (short for - measurementForVfScalingFields) records. In the future, these may be - extended to support other types of technology independent records. - Each of these records allows additional fields (name/ value pairs) - for extensibility. The vendors can use these vendor-specific - additional fields to provide additional information that may be - relevant to the managing systems. - -- Technology Specific Records: This version of the document specifies - the model for Mobile Flow records, Signaling and Voice Quality - records. In the future, these may be extended to support other types - of records (e.g., Network Fabric, Security records, etc.). Each of - these records allows additional fields (name/value pairs) for - extensibility. The VNF vendors can use these VNF-specific additional - fields to provide additional information that may be relevant to the - managing systems. A placeholder for additional technology specific - areas of interest to be defined in the future documents has been - depicted. +- Technology Independent Records: This version of the document specifies + the model for Fault, Heartbeat, State Change, Syslog, Threshold Crossing + Alerts, and VNF Scaling* (short for measurementForVfScalingFields – actual + name used in JSON specification) records. In the future, these may be + extended to support other types of technology independent records. Each + of these records allows additional fields (name/ value pairs) for extensibility. + The vendors can use these vendor-specific additional fields to provide + additional information that may be relevant to the managing systems. + +- Technology Specific Records: This version of the document specifies the model + for Mobile Flow records, Signaling and Voice Quality records. In the future, + these may be extended to support other types of records (e.g. Network Fabric, + Security records, etc.). Each of these records allows additional fields + (name/value pairs) for extensibility. The VNF vendors can use these VNF-specific + additional fields to provide additional information that may be relevant to the + managing systems. A placeholder for additional technology specific areas of + interest to be defined in the future documents has been depicted. |image0| @@ -745,112 +691,104 @@ The data structure for event records consists of: - e.g., Mobile Flow domain, Signaling domain, Voice Quality domain, etc. -Note: Heartbeat records would only have the Common Event Header block. -An optional heartbeat domain is available if required by the heartbeat -implementation. - Common Event Header ~~~~~~~~~~~~~~~~~~~~~ -The common header that precedes any of the domain-specific records -contains information identifying the type of record to follow, -information about the sender and other identifying characteristics -related to timestamp, sequence number, etc. +The common header that precedes any of the domain-specific records contains +information identifying the type of record to follow, information about +the sender and other identifying characteristics related to timestamp, +sequence number, etc. Technology Independent Records – Fault Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Fault Record, describing a condition in the Fault domain, contains -information about the fault such as the entity under fault, the +The Fault Record, describing a condition in the Fault domain, contains +information about the fault such as the entity under fault, the severity, resulting status, etc. Technology Independent Records – Heartbeat Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Heartbeat Record provides an optional structure for communicating -information about heartbeat or watchdog signaling events. It can contain -information about service intervals, status information etc. as required -by the heartbeat implementation. +The Heartbeat Record provides an optional structure for communicating +information about heartbeat or watchdog signaling events. It can +contain information about service intervals, status information etc. +as required by the heartbeat implementation. + +Note: Heartbeat records would only have the Common Event Header block. +An optional heartbeat domain is available if required by the heartbeat +implementation. Technology Independent Records – State Change Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The State Change Record provides a structure for communicating -information about data flow through the VNF. It can contain information -about state change related to physical device that is reported by VNF. -As an example, when cards or port name of the entity that has changed -state. +The State Change Record provides a structure for communicating information +about data flow through the VNF. It can contain information about state +change related to physical device that is reported by VNF. As an example, +when cards or port name of the entity that has changed state. Technology Independent Records – Syslog Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Syslog Record provides a structure for communicating any type of -information that may be logged by the VNF. It can contain information +The Syslog Record provides a structure for communicating any type of +information that may be logged by the VNF. It can contain information about system internal events, status, errors, etc. Technology Independent Records – Threshold Crossing Alert Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Threshold Crossing Alert (TCA) Record provides a structure for -communicating information about threshold crossing alerts. It can -contain alert definitions and types, actions, events, timestamps and -physical or logical details. +The Threshold Crossing Alert (TCA) Record provides a structure for +communicating information about threshold crossing alerts. It can +contain alert definitions and types, actions, events, timestamps +and physical or logical details. -Technology Independent Records - VF Scaling Fields +Technology Independent Records - VNF Scaling Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The VF Scaling\* (short for measurementForVfScalingFields) Record -contains information about VF and VNF resource structure and its -condition to help in the management of the resources for purposes of -elastic scaling. +The VNF Scaling\* (short for measurementForVfScalingFields – +actual name used in JSON specification) Record contains information +about VNF and VNF resource structure and its condition to help in +the management of the resources for purposes of elastic scaling. Technology Independent Records – otherFields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The otherFields Record defines fields for events belonging to the -otherFields domain of the Technology Independent domain enumeration. -This record provides a mechanism to convey a complex set of fields -(possibly nested or opaque) and is purely intended to address -miscellaneous needs such as addressing time-to-market considerations or -other proof-of-concept evaluations.  Hence, use of this record type is -discouraged and should be minimized. +The otherFields Record defines fields for events belonging to the +otherFields domain of the Technology Independent domain enumeration. +This record provides a mechanism to convey a complex set of fields +(possibly nested or opaque) and is purely intended to address +miscellaneous needs such as addressing time-to-market considerations +or other proof-of-concept evaluations. Hence, use of this record +type is discouraged and should be minimized. Technology Specific Records – Mobile Flow Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Mobile Flow Record provides a structure for communicating -information about data flow through the VNF. It can contain information -about connectivity and data flows between serving elements for mobile -service, such as between LTE reference points, etc. +The Mobile Flow Record provides a structure for communicating +information about data flow through the VNF. It can contain +information about connectivity and data flows between serving +elements for mobile service, such as between LTE reference points, etc. Technology Specific Records – Signaling Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The Signaling Record provides a structure for communicating information -about signaling messages, parameters and signaling state. It can contain -information about data flows for -`signaling `__ -and controlling -`multimedia `__ communication -`session `__\ s -such as `voice `__ and -`video calls `__. +The Signaling Record provides a structure for communicating information +about signaling messages, parameters and signaling state. It can +contain information about data flows for signaling and controlling +multimedia communication sessions such as voice and video calls. Technology Specific Records – Voice Quality Fields ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Voice Quality Record provides a structure for communicating -information about voice quality statistics including media connection -information, such as transmitted octet and packet counts, packet loss, -packet delay variation, round-trip delay, QoS parameters and codec -selection. +The Voice Quality Record provides a structure for communicating information +about voice quality statistics including media connection information, +such as transmitted octet and packet counts, packet loss, packet delay +variation, round-trip delay, QoS parameters and codec selection. Technology Specific Records – Future Domains ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The futureDomains Record is a placeholder for additional technology -specific areas of interest that will be defined and described in the -future documents. +The futureDomains Record is a placeholder for additional technology +specific areas of interest that will be defined and described +in the future documents. Data Structure Specification of the Event Record ------------------------------------------------ @@ -859,6 +797,211 @@ For additional information on the event record formats of the data structures mentioned above, please refer to `VES Event Listener `__. +Transports and Protocols Supporting Resource Interfaces +------------------------------------------------------- + +Delivery of data from VNFs to ONAP must use the common transport mechanisms and protocols +for all VNFs as defined in this document. Transport mechanisms and protocols have been +selected to enable both high volume and moderate volume datasets, as well as asynchronous +and synchronous communications over secure connections. The specified encoding provides +self-documenting content, so data fields can be changed as needs evolve, while minimizing +changes to data delivery. + +The term ‘Event Record’ is used throughout this document to represent various forms of +telemetry or instrumentation made available by the VNF including, faults, status events, +various other types of VNF measurements and logs. Headers received by themselves must be +used as heartbeat indicators. Common structures and delivery protocols for other types of +data will be given in future versions of this document as we get more insight into data +volumes and required processing. + +In the following sections, we provide options for encoding, serialization and data +delivery. Agreements between Service Providers and VNF vendors shall determine which +encoding, serialization and delivery method to use for particular data sets. The selected +methods must be agreed to prior to the on-boarding of the VNF into ONAP design studio. + +VNF Telemetry using VES/JSON Model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The preferred model for data delivery from a VNF to ONAP DCAE is the JSON driven model as depicted in Figure 2. + +|image1| + +Figure 2. VES/JSON Driven Model + +VNF vendors will provide a YAML artifact to the Service Provider that describes: + +* standard VES/JSON model information elements (key/values) that the VNF provides +* any additional non-standard (custom) VES/JSON model information elements (key/values) that the VNF provides + +Using the semantics and syntax supported by YAML, vendors will indicate specific conditions that may +arise, and recommend actions that should be taken at specific thresholds, or if specific conditions +repeat within a specified time interval. + +Based on the vendor’s recommendations, the Service Provider may create additional YAML artifacts +(using ONAP design Studio), which finalizes Service Provider engineering rules for the processing of +the vendor’s events. The Service Provider may alter the threshold levels recommended by the vendor, +and may modify and more clearly specify actions that should be taken when specified conditions arise. +The Service Provider-created version of the YAML artifact will be distributed to ONAP applications +by the Design framework. + +VNF Telemetry using YANG Model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the JSON driven model described above, a YANG driven model can also be +supported, as depicted in Figure 3. + +|image2| + +Figure 3. YANG Driven Model + +VNF vendors will provide to the Service Provider the following YANG model artifacts: + +* common IETF YANG modules that support the VNF +* native (vendor-supplied) YANG modules that support the VNF +* open (OpenConfig) YANG modules and the following configuration-related information, including: + + * telemetry configuration and operational state data; such as: + + * sensor paths + * subscription bindings + * path destinations + * delivery frequency + * transport mechanisms + * data encodings + +* a YAML artifact that provides all necessary mapping relationships between YANG model data types to VES/JSON information elements +* YANG helper or decoder functions that automate the conversion between YANG model data types to VES/JSON information elements +* OPTIONAL: YANG Telemetry modules in JSON format per RFC 7951 + +Using the semantics and syntax supported by YANG, vendors will indicate specific conditions that may +arise, and recommend actions that should be taken at specific thresholds, or if specific conditions +repeat within a specified time interval. + +Based on the vendor’s recommendations, the Service Provider may create additional YAML artifacts +(using ONAP design Studio), which finalizes Service Provider engineering rules for the processing +of the vendor’s events. The Service Provider may alter the threshold levels recommended by the +vendor, and may modify and more clearly specify actions that should be taken when specified +conditions arise. The Service Provided-created version of the YAML will be distributed to ONAP +applications by the Design framework. + +Note: While supporting the YANG model described above, we are still leveraging the VES JSON +based model in DCAE. The purpose of the diagram above is to illustrate the concept only and +not to imply a specific implementation. + +VNF Telemetry using Google Protocol Buffers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the data delivery models described above, support for delivery of VNF telemetry +using Google Protocol Buffers (GPB) can also be supported, as depicted in Figure 4. + +VNF vendors will provide to the Service Provider the additional following artifacts to +support the delivery of VNF telemetry to DCAE via the open-source gRPC mechanism using +Google's Protocol Buffers: + +* the YANG model artifacts described in support of the "VNF Telemetry using YANG Model" +* valid definition file(s) for all GPB / KV-GPB encoded messages +* valid definition file(s) for all gRPC services +* gRPC method parameters and return types specified as Protocol Buffers messages + +|image3| + +Figure 4. Protocol Buffers Driven Model + +Note: if Google Protocol Buffers are employed for delivery of VNF telemetry, Key-Value +Google Protocol Buffers (KV-GPB) is the preferred serialization method. Details of +specifications and versioning corresponding to a release can be found +at: `VES Event Listener `__. + +Note: While supporting the VNF telemetry delivery approach described above, we are +still leveraging the VES JSON based model in DCAE. The purpose of the diagram above +is to illustrate the concept only and not to imply a specific implementation. + +Monitoring & Management Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**VNF telemetry via standardized interface** + +* R-51910 The VNF **MUST** provide all telemetry (e.g., fault event records, syslog records, performance records etc.) to ONAP using the model, format and mechanisms described in this section. + +**Encoding and Serialization** + +Content delivered from VNFs to ONAP is to be encoded and serialized using JSON: + +**JSON** + +* R-19624 The VNF **MUST** encode and serialize content delivered to ONAP using JSON (RFC 7159) plain text format. High-volume data + is to be encoded and serialized using `Avro `_, where the Avro [5]_ data format are described using JSON. + + - JSON plain text format is preferred for moderate volume data sets (option 1), as JSON has the advantage of having well-understood simple processing and being human-readable without additional decoding. Examples of moderate volume data sets include the fault alarms and performance alerts, heartbeat messages, measurements used for VNF scaling and syslogs. + - Binary format using Avro is preferred for high volume data sets (option 2) such as mobility flow measurements and other high-volume streaming events (such as mobility signaling events or SIP signaling) or bulk data, as this will significantly reduce the volume of data to be transmitted. As of the date of this document, all events are reported using plain text JSON and REST. + - Avro content is self-documented, using a JSON schema. The JSON schema is delivered along with the data content (http://avro.apache.org/docs/current/ ). This means the presence and position of data fields can be recognized automatically, as well as the data format, definition and other attributes. Avro content can be serialized as JSON tagged text or as binary. In binary format, the JSON schema is included as a separate data block, so the content is not tagged, further compressing the volume. For streaming data, Avro will read the schema when the stream is established and apply the schema to the received content. + +In addition to the preferred method (JSON), content can be delivered from VNFs to ONAP can be encoded and serialized using Google Protocol Buffers (GPB). + +**KV-GPB/GPB** + +Telemetry data delivered using Google Protocol Buffers v3 (proto3) can be serialized in one of the following methods: + +* Key-value Google Protocol Buffers (KV-GPB) is also known as self-describing GPB: + + * keys are strings that correspond to the path of the system resources for the VNF being monitored. + * values correspond to integers or strings that identify the operational state of the VNF resource, such a statistics counters and the state of a VNF resource. + +* VNF vendors must supply valid KV-GPB definition file(s) to allow for the decoding of all KV-GPB encoded telemetry messages. + +* Native Google Protocol Buffers (GPB) is also known as compact GPB: + + * keys are represented as integers pointing to the system resources for the VNF being monitored. + * values correspond to integers or strings that identify the operational state of the VNF resource, such a statistics counters and the state of a VNF resource. + +* Google Protocol Buffers (GPB) requires metadata in the form of .proto files. VNF vendors must supply the necessary GPB .proto files such that GPB telemetry messages can be encoded and decoded. + +* In the future, we may consider support for other types of encoding & serialization methods based on industry demand + + +**Reporting Frequency** + +* R-98191 The VNF **MUST** vary the frequency that asynchronous data is delivered based on the content and how data may be aggregated or grouped together. For example, alarms and alerts are expected to be delivered as soon as they appear. In contrast, other content, such as performance measurements, KPIs or reported network signaling may have various ways of packaging and delivering content. Some content should be streamed immediately; or content may be monitored over a time interval, then packaged as collection of records and delivered as block; or data may be collected until a package of a certain size has been collected; or content may be summarized statistically over a time interval, or computed as a KPI, with the summary or KPI being delivered. + + - We expect the reporting frequency to be configurable depending on the virtual network function’s needs for management. For example, Service Provider may choose to vary the frequency of collection between normal and trouble-shooting scenarios. + - Decisions about the frequency of data reporting will affect the size of delivered data sets, recommended delivery method, and how the data will be interpreted by ONAP. These considerations should not affect deserialization and decoding of the data, which will be guided by the accompanying JSON schema or GPB definition files. + +**Addressing and Delivery Protocol** + +ONAP destinations can be addressed by URLs for RESTful data PUT. Future data sets may also be addressed by host name and port number for TCP streaming, or by host name and landing zone directory for SFTP transfer of bulk files. + +* R-88482 The VNF **SHOULD** use REST using HTTPS delivery of plain text JSON for moderate sized asynchronous data sets, and for high volume data sets when feasible. +* R-84879 The VNF **MUST** have the capability of maintaining a primary and backup DNS name (URL) for connecting to ONAP collectors, with the ability to switch between addresses based on conditions defined by policy such as time-outs, and buffering to store messages until they can be delivered. At its discretion, the service provider may choose to populate only one collector address for a VNF. In this case, the network will promptly resolve connectivity problems caused by a collector or network failure transparently to the VNF. +* R-81777 The VNF **MUST** be configured with initial address(es) to use at deployment time. Subsequently, address(es) may be changed through ONAP-defined policies delivered from ONAP to the VNF using PUTs to a RESTful API, in the same manner that other controls over data reporting will be controlled by policy. +* R-08312 The VNF **MAY** use other options which are expected to include + + - REST delivery of binary encoded data sets. + - TCP for high volume streaming asynchronous data sets and for other high volume data sets. TCP delivery can be used for either JSON or binary encoded data sets. + - SFTP for asynchronous bulk files, such as bulk files that contain large volumes of data collected over a long time interval or data collected across many VNFs. This is not preferred. Preferred is to reorganize the data into more frequent or more focused data sets, and deliver these by REST or TCP as appropriate. + - REST for synchronous data, using RESTCONF (e.g., for VNF state polling). + +* R-03070 The VNF **MUST**, by ONAP Policy, provide the ONAP addresses as data destinations for each VNF, and may be changed by Policy while the VNF is in operation. We expect the VNF to be capable of redirecting traffic to changed destinations with no loss of data, for example from one REST URL to another, or from one TCP host and port to another. + +**Asynchronous and Synchronous Data Delivery** + +* R-06924 The VNF **MUST** deliver asynchronous data as data becomes available, or according to the configured frequency. +* R-73285 The VNF **MUST** must encode, address and deliver the data as described in the previous paragraphs. +* R-42140 The VNF **MUST** respond to data requests from ONAP as soon as those requests are received, as a synchronous response. +* R-34660 The VNF **MUST** use the RESTCONF/NETCONF framework used by the ONAP configuration subsystem for synchronous communication. +* R-86585 The VNF **MUST** use the YANG configuration models and RESTCONF [RFC8040] (https://tools.ietf.org/html/rfc8040). +* R-11240 The VNF **MUST** respond with content encoded in JSON, as described in the RESTCONF specification. This way the encoding of a synchronous communication will be consistent with Avro. +* R-70266 The VNF **MUST** respond to an ONAP request to deliver the current data for any of the record types defined in `Event Records - Data Structure Description`_ by returning the requested record, populated with the current field values. (Currently the defined record types include fault fields, mobile flow fields, measurements for VNF scaling fields, and syslog fields. Other record types will be added in the future as they become standardized and are made available.) +* R-46290 The VNF **MUST** respond to an ONAP request to deliver granular data on device or subsystem status or performance, referencing the YANG configuration model for the VNF by returning the requested data elements. +* R-43327 The VNF **SHOULD** use `Modeling JSON text with YANG `_, If YANG models need to be translated to and from JSON{RFC7951]. YANG configuration and content can be represented via JSON, consistent with Avro, as described in “Encoding and Serialization” section. + +**Security** + +* R-42366 The VNF **MUST** support secure connections and transports such as Transport Layer Security (TLS) protocol [`RFC5246 `_] and should adhere to the best current practices outlined in `RFC7525 `_. +* R-44290 The VNF **MUST** control access to ONAP and to VNFs, and creation of connections, through secure credentials, log-on and exchange mechanisms. +* R-47597 The VNF **MUST** carry data in motion only over secure connections. +* R-68165 The VNF **MUST** encrypt any content containing Sensitive Personal Information (SPI) or certain proprietary data, in addition to applying the regular procedures for securing access and delivery. + + .. [1] https://github.com/mbj4668/pyang @@ -883,3 +1026,16 @@ Listener /hosts + +Example of inventory hosts file path, relative to ansible playbooks root +directory (playbooks\_dir): ansible/inventory/vnfx0001v/hosts + +Designing for a shared environment, concurrently running 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: + +Following the same approach for inventory hosts files, files +referenced/included by playbooks containing default values, +default\_args.yml, shall be stored under a directory with VNF instance +name on the path. + +Example: + +ansible/vars//default\_args.yml + +Files containing attribute name value pairs (variable name and default +values), referenced/included by playbooks – created dynamically by +playbooks: + +Following the same approach for inventory hosts files, 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. + +Example: + +tmp//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 vars directory, in a +subdirectory named after the string used to identify the site (nyc1, +lax2,…). + +Examples: + +ansible/vars//default\_args.yml + +ansible/vars/nyc1/default\_args.yml + +ansible/vars/lax2/default\_args.yml + +\ **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), they are the first 4 characters on +the VNF instance name, which is 9 characters long. 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 vendor will start with the same 4 +characters, in this example, vfdb. + +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. + +NOTE: Current Services Platform naming convention is undergoing changes +to include geographical location to the VNF names. + +Version – As in 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 + 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. + +Playbook Function - Is 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 function that executes +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: + +- configure – Contains post-instantiation (bulk) configuration + playbooks, roles,… + +- healthcheck – Contains VNF health check playbook(s), roles,… + +- stop – Contains VNF application stop playbook(s), roles,… + +- start – Contains VNF application start 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: + +.. code-block:: none + + /storage///ansible//site.yml + +Example – Post-instantiation (bulk) configuration –APPC Function - +Configure: + +.. code-block:: none + + /storage///ansible/configure/site.yml + +Example – Health-check –APPC Function - HealthCheck: + +.. code-block:: none + + /storage///ansible/healthcheck/site.yml + +OR (Function directory name does not need to match APPC function name) + +.. code-block:: none + + /storage///ansible/check/site.yml + +Ansible Directories for other artifacts – VNF inventory hosts file - +Required: + +.. code-block:: none + + /storage///ansible/inventory//hosts + +Ansible Directories for other artifacts – VNF inventory hosts file – +Required: + +.. code-block:: none + + /storage///ansible/vars//default\_args.yml + +NOTE: This requirement is expected to be deprecated 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. + +Ansible Directories for other artifacts – VNF (special) groups – +Optional: + +.. code-block:: none + + /storage///ansible/groups//common\_groups.yml + +NOTE: Default groups will be created based on VNFC type, 3 characters, +on VNFC name. Example: “oam”, “rdb”, “dbs”, “man”, “iox”, “app”,… + +Ansible Directories for other artifacts – VNF (special) other files – +Optional – Example – License file: + +.. code-block:: none + + /storage///ansible/ + +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 + by playbooks as part of execution), required to run any playbook, + shall reside under the ansible root directory or below on other + subdirectories. + +- Any references to files, on includes or other playbook entries, shall + use relative paths. + +- This is the ansible (root directory) directory referenced on this + note: + +.. code-block:: none + + /storage///ansible/ + +There will be a soft link to the latest set of Ansible Playbooks for +each VNF type and this is the default set of playbooks that are executed +unless a different release is specified in APPC request. + +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: + +/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 +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. + +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. + +ONAP APPC REST API to Ansible Server is documented separately and can be +found under ONAP (onap.org). + +\ **Ansible Server – On-boarding Ansible Playbooks ** + +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. + +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. + +2. Create full directory (using –p option below) to store Ansible + Playbooks and other artifacts under /storage file system. + + a. Includes VNF type using VNF function code 4 characters under + /storage. + + b. 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 + path as an example: + +.. code-block:: none + + $ mkdir –p /storage/vfdb/V16.1/ansible**/** + +3. Make this directory (VNF ansible root directory) current directory + for next few steps: + +.. code-block:: none + + cd /storage/vfdb/V16.1/ansible/ + +4. 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:: none + + tar xvf .. + unzip … + bunzip .. + +5. Create directory for VNF (VMs) 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: + +.. code-block:: none + + $ mkdir –p inventory/vfdb9904v + + $ touch inventory/vfdb9904v/hosts + + $ cat inventory/vfdb9904v/hosts + + [host] + localhost ansible\_connection=local + + [oam] + 1xx.2yy.zzz.109 ansible\_ssh\_private\_key\_file=/storage/.ssh/Kilo-SSH-Key.pem + 1xx.2yy.zzz.110 ansible\_ssh\_private\_key\_file=/storage/.ssh/Kilo-SSH-Key.pem + + [rdb] + 1xx.2yy.zzz.105 ansible\_ssh\_private\_key\_file=/storage/.ssh/Kilo-SSH-Key.pem + 1xx.2yy.zzz.106 ansible\_ssh\_private\_key\_file=/storage/.ssh/Kilo-SSH-Key.pem + +6. Create directory to hold default arguments for each VNF instance, + example: + +.. code-block:: none + + $ 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 + + vm\_config\_oam2\_vnfc\_name: vfdb9904vm002oam001 + vm\_config\_oam2\_hostname: vfdb9904vm002 + vm\_config\_oam2\_provider\_ip\_address: 1xx.2yy.zzz.110 + + vm\_config\_rdb1\_vnfc\_name: vfdb9904vm003rdb001 + vm\_config\_rdb1\_hostname: vfdb9904vm003 + vm\_config\_rdb1\_provider\_ip\_address: 1xx.2yy.zzz.105 + + vm\_config\_rdb2\_vnfc\_name: vfdb9904vm004rdb001 + vm\_config\_rdb2\_hostname: vfdb9904vm004 + vm\_config\_rdb2\_provider\_ip\_address: 1xx.2yy.zzz.106 + + vm\_config\_rdb3\_vnfc\_name: vfdb9904vm005rdb001 + vm\_config\_rdb3\_hostname: vfdb9904vm005 + vm\_config\_rdb3\_provider\_ip\_address: 1xx.2yy.zzz.xxx + + 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 +“.” or dashes “-“. + +7. Perform some basic playbook validation running with “--check” option, + running dummy playbooks or other. + +8. Upload any SSH keys referenced on hosts file to appropriate + directory. + +NOTE: HOT templates used by heat to instantiate VNF configured by these +playbooks shall include the same SSH key to be installed as part of +instantiation. + +Other non-vendor specific playbook tasks need to be incorporated on +overall post-instantiation configuration playbooks or company Playbooks +need to be uploaded and executed after VNF vendor provided or internally +developed playbooks for the VNF. + .. [1] The “name” field is a mandatory field in a valid Chef Node Object diff --git a/docs/Data_Model_For_Event_Records.png b/docs/Data_Model_For_Event_Records.png index 1cb7464d01b807a4152a8ed9ff23bfee5127e2a7..0d4277073c897e3ff5b697243adb2290b960a20d 100644 GIT binary patch literal 61638 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

-GaI7CSq~qtjzEMaW1n^A((j$o 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 literal 0 HcmV?d00001 diff --git a/docs/VES_JSON_Driven_Model.png b/docs/VES_JSON_Driven_Model.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8afb2980d37f0e854f346ccbd28a8638ee8ae8 GIT binary patch literal 9218 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 vDZ(aM!YDD`btTKDB># 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 W$@wx&4gB8@Nb!~G%Mv-$fd2($`i=nr literal 0 HcmV?d00001 diff --git a/docs/YANG_Driven_Model.png b/docs/YANG_Driven_Model.png new file mode 100644 index 0000000000000000000000000000000000000000..54d642be4e78d0087a3185e595fc10a17dea6d69 GIT binary patch literal 13313 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 DVEIl1 literal 0 HcmV?d00001 -- 2.16.6

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 z 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