Add Chef Documentation to readthedocs
Adding the Chef Adapter documentation to be available in onap.readthedocs.io as it is shown in
https://wiki.onap.org/display/DW/APP-C+Chef+Adapter
Change-Id: I07fca164477708a1354bda09cde901965646df10
Signed-off-by: Hector Anapan <ha076r@att.com>
Issue-Id: [APPC-247]
diff --git a/docs/Chef Adapter/Chef Adapter.rst b/docs/Chef Adapter/Chef Adapter.rst
new file mode 100644
index 0000000..d434d9f
--- /dev/null
+++ b/docs/Chef Adapter/Chef Adapter.rst
@@ -0,0 +1,121 @@
+===============================
+APPC Chef Adapter Documentation
+===============================
+
+This wiki provides documentation regarding the design, capabilities and usage of the Chef Extension for APPC.
+
+The Chef Extension for APPC allows management of VNFs that support Chef through the following two additions:
+
+1. An APPC Chef Adapter
+2. Chef Directed Graph (DG)
+
+Details of each of these two aspects are listed below:
+
+1. **Chef Directed Graph (DG)**:
+
++------------+--------+
+| Field | Value |
++============+========+
+| module | APPC |
++------------+--------+
+| rpc | chef |
++------------+--------+
+| version | 3.0.0 |
++------------+--------+
+
+The inputs that the Chef DG expects are listed below:
+
+Table 1: Input Parameters to the Chef Directed Graph
+
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| Variable Name | Description | Type | Comments |
++=====================+===========================================================+============+===========================================+
+| chef-server-address | The FQDN of the chef server | Mandatory | Should be provided by APPC. |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| chef-organization | The chef organization name | Mandatory | Should be provided by APPC. |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| chef-username | The username of the chef organization | Mandatory | Should be provided by APPC. |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| Environment | A JSON dictionary representing a Chef Environmentobject. | Optional | To be provided in template by VNF owner. |
+| | 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 representing a Chef Node Object. The | Mandatory | To be provided in template by VNF owner. |
+| | 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 correspond to the endpoints (VMs) of | Mandatory | To be provided in template. |
+| | a VNF registered with the Chef Server that need to | | |
+| | trigger a chef-client run as part of the desired | | |
+| | VNF action. | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| CallbackCapable | This field indicates if the chef-client run invoked by | Optional | To be provided in template by VNF owner. |
+| | push job corresponding to the VNF action is capable of | | |
+| | posting results on a callback URL. | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| RequestId | A unique string associated with the original request | Optional | To be provided by APPC. |
+| | 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. | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| CallbackUrl | Currently not used. | Optional | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| retryTimes | The retry times to query the result of chef push job. | Mandatory | To be provided in template by VNF owner. |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| retryInterval | The estimate duration to finish the push job. Measure | Mandatory | To be provided in template by VNF owner. |
+| | by milliseconds. | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| GetOutputFlag | Flag which indicates whether ONAP should retrieve output | Mandatory | To be provided in template by VNF owner. |
+| | generated in a chef-client run from Node object | | |
+| | attribute node[‘PushJobOutput’] for this VNF action | | |
+| | (e.g in Audit). | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+| PushJobFlag | Flag which indicates whether ONAP should trigger | Mandatory | To be provided in template by VNF owner. |
+| | the push job. | | |
++---------------------+-----------------------------------------------------------+------------+-------------------------------------------+
+
+
+Table 2: Output Variables set by chef DG
+
++-----------------------+-----------------------------------------------------------------+
+| Variable Name | Description |
++=======================+=================================================================+
+| output.status.code | Result of the request : 400 if SUCCESS , 200 if FAILURE. |
++-----------------------+-----------------------------------------------------------------+
+| output.status.message | If Cookbook finished, set to corresponding message. |
+| | If abnormal error, reported in message. |
++-----------------------+-----------------------------------------------------------------+
+| output.status.results | A JSON dictionary with results corresponding to PushJobOutput. |
++-----------------------+-----------------------------------------------------------------+
+
+
+Example:
+
+|image0|
+
+
+2. **APPC Chef Adapter**:
+
+a. Environment set:
+
+ - To connect to the chef server, APPC should load the chef server credentials.
+
+ - The Chef server uses role-based access control to restrict access to objects—nodes, environments, roles, data bags, cookbooks, and so on. So we need load the user's private key to authenticate the permission.
+
+APPC needs to pre-load the SSL certificate and user private key.
+
+The file structure is shown below:
+
+|image1|
+
+*chefServerSSL.jks* file saves all the SSL certificates of chef server. In the chef server, please check the chef server setting file at */etc/opscode/chef-server.rb*. The *chef-server.rb* declares where is the SSL certificate. Find the SSL crt file and use keytool to import certificate to the key store. The password of the *chefServerSSL.jks* is "*adminadmin*"
+
+The user private key file should be saved under */opt/appc/bvc/chef/{{CHEF SERVER FQDN}}/{{ORGANIZATION NAME}}* director and the file name should be *{{username}}.pem*. Please make sure this user have enough permission on the chef server.
+
+.. |image0| image:: images/image0.png
+.. |image1| image:: images/image1.png