Merge "VNFRQTS - Fixing VES Formatting"
[vnfrqts/requirements.git] / docs / Chapter8 / Ansible-JSON-Key-Value-Description.rst
index 4fd051c..e78ce5c 100644 (file)
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.
+.. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
+
+.. Licensed under the Creative Commons License, Attribution 4.0 Intl.
+   (the "License"); you may not use this documentation except in compliance
+   with the License. You may obtain a copy of the License at
+
+.. https://creativecommons.org/licenses/by/4.0/
+
+.. Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
 
 Ansible JSON Key Value Description
 -------------------------------------------------------------
 
 The following provides the key value pairs that must be contained in the
-JSON file supporting Ansible action.
+JSON file supporting APPC/SDN-C Ansible action.
 
 Table B1. Ansible JSON File key value description
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-+---------------+----------------------+---------+----------------------------+
-| **Field Name**| **Description**      | **Type**| **Comment**                |
-+===============+======================+=========+============================+
-| PlaybookName  | VNF providor must    |Mandatory|Currently following         |
-|               | list name of the     |         |Ansible standard            |
-|               | playbook relative    |         |naming, where main          |
-|               | path used to         |         |playbook is always          |
-|               | execute the VNF      |         |named site.yml, and         |
-|               | action.              |         |directory name where        |
-|               |                      |         |this main playbook resides, |
-|               |                      |         |is named after the          |
-|               |                      |         |command/action playbook     |
-|               |                      |         |performs, in lower case,    |
-|               |                      |         |example, configure.         |
-+---------------+----------------------+---------+----------------------------+
-| Action        | Name of VNF action.  | Optional|                            |
-+---------------+----------------------+---------+----------------------------+
-| EnvParameters | A JSON dictionary    | Optional|Depends on the VNF action.  |
-|               | which should list key|         |                            |
-|               | value pairs to be    |         |Attribute names (variable   |
-|               | passed to the Ansible|         |names) passed to Ansible    |
-|               | playbook. These      |         |shall follow Ansible valid  |
-|               | values would         |         |variable names: “Variable   |
-|               | correspond to        |         |names should be letters,    |
-|               | instance specific    |         |numbers, and underscores.   |
-|               | parameters that a    |         |Variables should always     |
-|               | playbook may need to |         |start with a letter.”       |
-|               | execute an action.   |         |                            |
-+---------------+----------------------+---------+----------------------------+
-| NodeList      |Ansible inventory     | Optional|If not provided, pre-loaded |
-|               |hosts file with       |         |(VNF) inventory hosts       |
-|               |VNF groups and        |         |file must exist in the      |
-|               |respective IP         |         |Ansible Server otherwise    |
-|               |addresses or DNS      |         |request fails.              |
-|               |supported FQDNs       |         |                            |
-|               |that the playbook must|         |                            |
-|               |be executed against.  |         |                            |
-+---------------+----------------------+---------+----------------------------+
-| FileParameters| A JSON dictionary    | Optional| Depends on the VNF action  |
-|               | where keys are       |         | and playbook design.       |
-|               | filenames and values |         |                            |
-|               | are contents of      |         |                            |
-|               | files. The Ansible   |         |                            |
-|               | Server will utilize  |         |                            |
-|               | this feature to      |         |                            |
-|               | generate files with  |         |                            |
-|               | keys as filenames and|         |                            |
-|               | values as content.   |         |                            |
-|               | This attribute can be|         |                            |
-|               | used to generate     |         |                            |
-|               | files that a playbook|         |                            |
-|               | may require as part  |         |                            |
-|               | of execution.        |         |                            |
-+---------------+----------------------+---------+----------------------------+
-| Timeout       | Time (in seconds)    | Optional|                            |
-|               | that a playbook is   |         |                            |
-|               | expected to take to  |         |                            |
-|               | finish execution for |         |                            |
-|               | the VNF. If playbook |         |                            |
-|               | execution time       |         |                            |
-|               | exceeds this value,  |         |                            |
-|               | Ansible Server will  |         |                            |
-|               | terminate the        |         |                            |
-|               | playbook process.    |         |                            |
-+---------------+----------------------+---------+----------------------------+
+.. csv-table:: **TOSCA Definition**
+   :file: Ansible JSON File Key Value Description.csv
+   :header-rows: 1
+   :align: center
+   :widths: auto
 
 Ansible JSON file example:
 
 .. code-block:: json
 
   {
-
-    “Action”:”Configure”,
-
+    "Action":"Configure",
     "PlaybookName": "<VNFCode>/<Version>/ansible/configure/site.yml",
-
-    "NodeList": ["test1.vnf\_b.onap.com", “test2.vnf\_b.onap.com”],
-
+    "NodeList": [
+      {
+        "vnfc_type": "oam",
+        "ne_id_vip": "vfdb9904vm001oam001",
+        "floating_ip_address_vip": "1xx.2yy.zzz.109",
+        "site": "wp0ny",
+        "vm_info": [
+          {
+            "ne_id": "vfdb9904vm001oam001",
+            "fixed_ip_address": "1xx.2yy.zzz.109"
+          },
+          {
+            "ne_id": "vfdb9904vm002oam001",
+            "fixed_ip_address": "1xx.2yy.zzz.110"
+          }
+        ]
+      },
+      {
+        "vnfc_type": "rdb",
+        "site": "wp0ny",
+        "vm_info": [
+          {
+            "ne_id": "vfdb9904vm003rdb001",
+            "fixed_ip_address": "1xx.2yy.zzz.105"
+          },
+          {
+            "ne_id": "vfdb9904vm004rdb001",
+            "fixed_ip_address": "1xx.2yy.zzz.106"
+          }
+        ]
+      }
+    ],
     "Timeout": 60,
-
-    "EnvParameters": {"Retry": 3, "Wait": 5, “ConfigFile”:”config.txt”},
-
-    “FileParameters”:{“config.txt”:”db\_ip=10.1.1.1, sip\_timer=10000”}
-
+    "InventoryNames": "None",
+    "EnvParameters": {"vnf_instance": "$vnf-instance", "Retry": 3, "Wait": 5, "ConfigFile":"config.txt", "healthcheck_type": "$healthcheck_type",  "target_vm_list": ["$ne-id1","..."] },
+    "FileParameters": {"config.txt":"db_ip=10.1.1.1, sip_timer=10000"}
   }
 
-In the above example, the Ansible Server will:
-
-a. Process the “FileParameters” dictionary and generate a file named
-   ‘config.txt’ with contents set to the value of the ‘config.txt’ key.
+In the above example, the Ansible Server Rest API code will:
 
-b. Execute the playbook named ‘<VNFCode>/<Version>/ansible/configure/site.yml’
-   on nodes with    FQDNs test1.vnf\_b.onap.com and test2.vnf\_b.onap.com
-   respectively while providing the following key value pairs to the playbook:
-   Retry=3, Wait=5, ConfigFile=config.txt
+#. Process the "FileParameters" dictionary and generate a file named
+   'config.txt' with contents set to the value of the 'config.txt' key.
 
+#. Execute the playbook named '<VNFCode>/<Version>/ansible/configure/site.yml'
+   on nodes with listed IP addresses (or FQDNs) respectively while providing
+   the following key value pairs to the playbook: Retry=3, Wait=5,
+   ConfigFile=config.txt
 
-c. If execution time of the playbook exceeds 60 secs (across all hosts),
+#. If execution time of the playbook exceeds 60 secs (across all hosts),
    it will be terminated.
 
+#. Inventory hosts file to be build with only IP addresses (or FQDNs), IP
+   addresses and VM names, or IP addresses and VNFC names depending on
+   InventoryNames setting in the template(s) passed to Ansible Server as part
+   of the Rest API request. In a later section with Ansible examples, examples
+   of supported inventory hosts file formats are shared.
+