diff options
Diffstat (limited to 'docs/Chapter8/Chef-JSON-Key-Value-Description.rst')
-rw-r--r-- | docs/Chapter8/Chef-JSON-Key-Value-Description.rst | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/docs/Chapter8/Chef-JSON-Key-Value-Description.rst b/docs/Chapter8/Chef-JSON-Key-Value-Description.rst new file mode 100644 index 0000000..7144159 --- /dev/null +++ b/docs/Chapter8/Chef-JSON-Key-Value-Description.rst @@ -0,0 +1,178 @@ +.. 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. + +Chef JSON Key Value Description +------------------------------------- + +The following provides the key value pairs that must be contained in the +JSON file supporting Chef action. + +Table A1. Chef JSON File key value description +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++----------------+--------------------------+---------+----------------------+ +| **Field Name** | **Description** | **Type**| **Comment** | ++================+==========================+=========+======================+ +| Environment | A JSON dictionary | Optional|Depends on VNF action.| +| | representing a Chef | | | +| | Environment object. If | | | +| | the VNF action requires | | | +| | loading or modifying Chef| | | +| | environment attributes | | | +| | associated with the VNF, | | | +| | all the relevant | | | +| | information must be | | | +| | provided in this JSON | | | +| | dictionary in a structure| | | +| | that conforms to a Chef | | | +| | Environment Object. | | | ++----------------+--------------------------+---------+----------------------+ +| Node | A JSON dictionary |Mandatory| | +| | representing a Chef Node | | | +| | Object. | | | +| | | | | +| | The Node JSON dictionary | | | +| | must include the run list| | | +| | to be triggered for the | | | +| | desired VNF action by the| | | +| | push job. It should also | | | +| | include any attributes | | | +| | that need to be | | | +| | configured on the Node | | | +| | Object as part of the VNF| | | +| | action. | | | ++----------------+--------------------------+---------+----------------------+ +| NodeList | Array of FQDNs that |Mandatory| | +| | correspond to the | | | +| | endpoints (VMs) of a VNF | | | +| | registered with the Chef | | | +| | Server that need to | | | +| | trigger a chef-client run| | | +| | as part of the desired | | | +| | VNF action. | | | ++----------------+--------------------------+---------+----------------------+ +| PushJobFlag | This field indicates |Mandatory| If set to “True”, | +| | whether the VNF action | | ONAP will request a | +| | requires a push Job. Push| | push job. Ignored | +| | job object will be | | otherwise. | +| | created by ONAP if | | | +| | required. | | | ++----------------+--------------------------+---------+----------------------+ +| CallbackCapable| This field indicates if | Optional| If Chef cookbook is | +| | the chef-client run | | callback capable, VNF| +| | invoked by push job | | owner is required to | +| | corresponding to the VNF | | set it to “True”. | +| | action is capable of | | Ignored otherwise. | +| | posting results on a | | | +| | callback URL. | | | ++----------------+--------------------------+---------+----------------------+ +| GetOutputFlag | Flag which indicates |Mandatory| ONAP will retrieve | +| | whether ONAP should | | output from | +| | retrieve output generated| | NodeObject attributes| +| | in a chef-client run from| | [‘PushJobOutput’] for| +| | Node object attribute | | all nodes in NodeList| +| | node[‘PushJobOutput’] for| | if set to “True”. | +| | this VNF action (e.g., in| | Ignored otherwise. | +| | Audit). | | | ++----------------+--------------------------+---------+----------------------+ + +Chef Template example: + +.. code-block:: chef + + “Environment”:{ + "name": "HAR", + "description": "VNF Chef environment for HAR", + "json\_class": "Chef::Environment", + "chef\_type": "environment", + "default\_attributes": { }, + "override\_attributes": { + “Retry\_Time”:”50”, + “MemCache”: “1024”, + “Database\_IP”:”10.10.1.5” + }, + } + } + “Node”: { + “name” : “signal.network.com “ + "chef\_type": "node", + "json\_class": "Chef::Node", + "attributes": { + “IPAddress1”: “192.168.1.2”, + “IPAddress2”:”135.16.162.5”, + “MyRole”:”BE” + }, + "override": {}, + "default": {}, + “normal”:{}, + “automatic”:{}, + “chef\_environment” : “\_default” + "run\_list": [ "configure\_signal" ] + }, + “NodeList”:[“node1.vnf\_a.onap.com”, “node2.vnf\_a.onap.com”], + “PushJobFlag”: “True” + “CallbackCapable”:True + “GetOutputFlag” : “False” + } + +The example JSON file provided by the VNF provider for each VNF action will be +turned into a template by ONAP, that can be updated with instance +specific values at run-time. + +Some points worth noting regarding the JSON fields: + +a. The JSON file must be created for each action for each VNF. + +b. If a VNF action involves multiple endpoints (VMs) of a VNF, ONAP will + replicate the “Node” JSON dictionary in the template and post it to + each FQDN (i.e., endpoint) in the NodeList after setting the “name” + field in the Node object to be the respective FQDN [1]_. Hence, it + is required that all end points (VMs) of a VNF involved in a VNF + action support the same set of Node Object attributes. + +The following table describes the JSON dictionary to post in Callback. + +Table A2. JSON Dictionary to Post in Callback +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++--------------+----------------------------+---------+-----------------------+ +| **Key** | **Description** | **Type**| **Comment** | ++==============+============================+=========+=======================+ +| RequestId | A unique string associated |Mandatory| | +| | with the original request | | | +| | by ONAP. This key-value | | | +| | pair will be provided by | | | +| | ONAP in the environment of | | | +| | the push job request and | | | +| | must be returned as part of| | | +| | the POST message. | | | ++--------------+----------------------------+---------+-----------------------+ +| StatusCode | An integer that must be set|Mandatory| | +| | to 200 if chef-client run | | | +| | on the node finished | | | +| | successfully 500 otherwise.| | | ++--------------+----------------------------+---------+-----------------------+ +| StatusMessage| A string which must be set |Mandatory| | +| | to ‘SUCCESS’ if StatusCode | | | +| | was 200 | | | +| | | | | +| | Appropriate error message | | | +| | otherwise. | | | ++--------------+----------------------------+---------+-----------------------+ +| Name | A string which corresponds |Mandatory| | +| | to the name of the node | | | +| | where push job is run. It | | | +| | is required that the value | | | +| | be retrieved from the node | | | +| | object attributes (where it| | | +| | is always defined). | | | ++--------------+----------------------------+---------+-----------------------+ +| PushJobOutput| Any output from the |Optional | Depends on VNF action.| +| | chef-client run that needs | | If empty, it must not | +| | to be returned to ONAP. | | be included. | ++--------------+----------------------------+---------+-----------------------+ + +.. [1] + The “name” field is a mandatory field in a valid Chef Node Object + JSON dictionary. |