X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=docs%2Fsli%2Fnorthbound%2Fnodes.rst;fp=docs%2Fsli%2Fnorthbound%2Fnodes.rst;h=3bdeabcfac5c9f04b783d4e692344c0558164d2f;hb=53afd94577da327523a887d2c8a2d2c182f76e5d;hp=0000000000000000000000000000000000000000;hpb=8b022a066415d239f661213bf37fdc0c2718f766;p=ccsdk%2Fdistribution.git
diff --git a/docs/sli/northbound/nodes.rst b/docs/sli/northbound/nodes.rst
new file mode 100644
index 00000000..3bdeabcf
--- /dev/null
+++ b/docs/sli/northbound/nodes.rst
@@ -0,0 +1,1031 @@
+--- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 ---
+
+Supported node types
+====================
+
+The following built-in node types are currently supported:
+
+- Flow Control
+
+ - `**block** <#Block_node>`__
+
+ - `**call** <#Call_node>`__
+
+ - `**for** <#For_node>`__
+
+ - `**return** <#Return_node>`__
+
+ - `**set** <#Set_node>`__
+
+ - `**switch** <#Switch_node>`__
+
+- Device Management
+
+ - `**configure** <#Configure_node>`__
+
+- Java Plugin Support
+
+ - `**execute** <#Execute_node>`__
+
+- Recording
+
+ - `**record** <#Record_node>`__
+
+- Resource Management
+
+ - `**delete** <#Delete_node>`__
+
+ - `**exists** <#Exists_node>`__
+
+ - `**get-resource** <#Get-resource_node>`__
+
+ - `**is-available** <#Is-available_node>`__
+
+ - `**notify** <#Notify_node>`__
+
+ - `**release** <#Release_node>`__
+
+ - `**reserve** <#Reserve_node>`__
+
+ - `**save** <#Save_node>`__
+
+ - `**update** <#Update_node>`__
+
+Flow Control
+------------
+
+Block node
+~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **block** node is used to executes a set of nodes.
+
+Attributes
+^^^^^^^^^^
+
++--------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| **atomic** | if *true*, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out. |
++--------------+-----------------------------------------------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
+None
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+Call node
+~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **call** node is used to call another graph
+
+Attributes
+^^^^^^^^^^
+
++---------------+------------------------------------------------------------------------------------+
+| **module** | Module of directed graph to call. If unset, defaults to that of calling graph |
++---------------+------------------------------------------------------------------------------------+
+| **rpc** | rpc of directed graph to call. |
++---------------+------------------------------------------------------------------------------------+
+| **version** | version of graph to call, If unset, uses active version. |
++---------------+------------------------------------------------------------------------------------+
+| **mode** | mode (sync/async) of graph to call. If unset, defaults to that of calling graph. |
++---------------+------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Not applicable
+
+Outcomes
+^^^^^^^^
+
++-----------------+------------------------------+
+| **success** | Sub graph returned success |
++-----------------+------------------------------+
+| **not-found** | Graph not found |
++-----------------+------------------------------+
+| **failure** | Subgraph returned success |
++-----------------+------------------------------+
+
+Table: .
+
+Example
+^^^^^^^
+
+::
+
+
+
+For node
+~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **for** node provides a fixed iteration looping mechanism, similar to
+the Java for loop
+
+Attributes
+^^^^^^^^^^
+
++-------------+------------------+
+| **index** | index variable |
++-------------+------------------+
+| **start** | initial value |
++-------------+------------------+
+| **end** | maximum value |
++-------------+------------------+
+
+Parameters
+^^^^^^^^^^
+
+Not applicable.
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **status** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+Return node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **return** node is used to return a status to the invoking MD-SAL
+application
+
+Attributes
+^^^^^^^^^^
+
++--------------+---------------------------------------------------+
+| **status** | Status value to return (*success* or *failure*) |
++--------------+---------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+The following optional parameters may be passed to convey more detailed
+status information.
+
++---------------------+-----------------------------------------------------------------+
+| **error-code** | A brief, usually numeric, code indicating the error condition |
++---------------------+-----------------------------------------------------------------+
+| **error-message** | A more detailed error message |
++---------------------+-----------------------------------------------------------------+
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **status** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+Set node
+~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **set** node is used to set one or more values in the execution
+context
+
+Attributes
+^^^^^^^^^^
+
++---------------------+-------------------------------------------------------------------------------------+
+| **only-if-unset** | If true the set node will only execute if the current value of the target is null |
++---------------------+-------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to be set are passed as parameters
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **set** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+Switch node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **switch** node is used to make a decision based on its **test**
+attribute.
+
+Attributes
+^^^^^^^^^^
+
++------------+---------------------+
+| **test** | Condition to test |
++------------+---------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
+Depends on the **test** condition
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Device Management
+-----------------
+
+Configure node
+~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **configure** node is used to configure a device.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-----------------------------------------------------------------------------------+
+| **adaptor** | Fully qualified Java class of resource adaptor to be used |
++----------------+-----------------------------------------------------------------------------------+
+| **activate** | Activate device/interface, for devices that support a separate activation step. |
++----------------+-----------------------------------------------------------------------------------+
+| **key** | SQL-like string specifying criteria for item to configure |
++----------------+-----------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Specific to device adaptor.
+
+Outcomes
+^^^^^^^^
+
++----------------------+------------------------------------------------------------------+
+| **success** | Device successfully configured |
++----------------------+------------------------------------------------------------------+
+| **not-found** | Element to be configured does not exist. |
++----------------------+------------------------------------------------------------------+
+| **not-ready** | Element is not in a state where it can be configured/activated |
++----------------------+------------------------------------------------------------------+
+| **already-active** | Attempt to activate element that is already active |
++----------------------+------------------------------------------------------------------+
+| **failure** | Configure failed for some other reason |
++----------------------+------------------------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Java Plugin Support
+-------------------
+
+Execute node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **execute** node is used to execute Java code supplied as a plugin
+
+Attributes
+^^^^^^^^^^
+
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of plugin to be used |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **method** | Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory) |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Specific to plugin / method
+
+Outcomes
+^^^^^^^^
+
++--------------------------+-----------------------------------------------------------------+
+| **success** | Device successfully configured |
++--------------------------+-----------------------------------------------------------------+
+| **not-found** | Plugin class could not be loaded |
++--------------------------+-----------------------------------------------------------------+
+| **unsupported-method** | Named method taking (Map, SvcLogicContext) could not be found |
++--------------------------+-----------------------------------------------------------------+
+| **failure** | Configure failed for some other reason |
++--------------------------+-----------------------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Recording
+---------
+
+Record node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **record** node is used to record an event. For example, this might be
+used to log provisioning events.
+
+Attributes
+^^^^^^^^^^
+
++--------------+---------------------------------------------------+
+| **plugin** | Fully qualified Java class to handle recording. |
++--------------+---------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Parameters will depend on the plugin being used. For the FileRecorder
+class, the parameters are as follows
+
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **file** | The file to which the record should be written |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **field1** | First field to write. There will be **field** parameters for each field to write, from **field1** through **fieldN**. A special value \_\_TIMESTAMP\_\_ may be assigned to a field to insert the current timestamp |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Outcomes
+^^^^^^^^
+
++---------------+--------------------------------------------+
+| **success** | Record successfully written |
++---------------+--------------------------------------------+
+| **failure** | Record could not be successfully written |
++---------------+--------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+Resource Management
+-------------------
+
+Delete node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **delete** node is used to delete a resource from the local resource
+inventory.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+-------------------------------------------------------------+
+| **resource** | Type of resource to delete |
++----------------+-------------------------------------------------------------+
+| **key** | SQL-like string specifying key to delete |
++----------------+-------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+--------------------------------------------+
+| **success** | Resource specified deleted successfully. |
++---------------+--------------------------------------------+
+| *failure*> | Resource specified was not deleted |
++---------------+--------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Exists node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **exists** node is used to determine whether a particular instance of
+a resource exists. For example, this might be used to test whether a
+particular switch CLLI is provisioned.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+-------------------------------------------------------------+
+| **resource** | Type of resource to check |
++----------------+-------------------------------------------------------------+
+| **key** | SQL-like string specifying key to check for |
++----------------+-------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-------------+---------------------------------+
+| **true** | Resource specified exists. |
++-------------+---------------------------------+
+| **false** | Resource specified is unknown |
++-------------+---------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Get-resource node
+~~~~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **get-resource** node is used to retrieve information about a
+particular resource and make it available to other nodes in the service
+logic tree. For example, this might be used to retrieve information
+about a particular uni-port.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+------------------------------------------------------------------------------------------+
+| **resource** | Type of resource to retrieve |
++----------------+------------------------------------------------------------------------------------------+
+| **key** | SQL-like string specifying criteria for retrieval |
++----------------+------------------------------------------------------------------------------------------+
+| **pfx** | Prefix to add to context variable names set for data retrieved |
++----------------+------------------------------------------------------------------------------------------+
+| **select** | String to specify, if key matches multiple entries, which entry should take precedence |
++----------------+------------------------------------------------------------------------------------------+
+| **order-by** | Prefix to add to context variable names set for data retrieved |
++----------------+------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-----------------+--------------------------------------------------+
+| **success** | Resource successfully retrieved |
++-----------------+--------------------------------------------------+
+| **not-found** | Resource referenced does not exist |
++-----------------+--------------------------------------------------+
+| **failure** | Resource retrieve failed for some other reason |
++-----------------+--------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+Is-available node
+~~~~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **is-available** node is used to determine whether a particular type
+of resource is available. For example, this might be used to test
+whether any ports are available for assignment on a particular switch.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+------------------------------------------------------------------+
+| **resource** | Type of resource to check |
++----------------+------------------------------------------------------------------+
+| **key** | SQL-like string specifying key to check for |
++----------------+------------------------------------------------------------------+
+| **pfx** | Prefix to add to context variable names set for data retrieved |
++----------------+------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-------------+---------------------------------------+
+| **true** | Resource requested is available |
++-------------+---------------------------------------+
+| **false** | Resource requested is not available |
++-------------+---------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Notify node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **notify** node is used to inform an external application (e.g. A&AI)
+that a resource was updated.
+
+Attributes
+^^^^^^^^^^
+
++----------------+---------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+---------------------------------------------------------------------+
+| **resource** | Identifies resource that was updated |
++----------------+---------------------------------------------------------------------+
+| **action** | Action that triggered notification to be sent (ADD/UPDATE/DELETE) |
++----------------+---------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+----------------------------------------+
+| **success** | Notification was successful |
++---------------+----------------------------------------+
+| **failure** | Notification failed is not available |
++---------------+----------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Release node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **release** node is used to mark a resource as no longer in use, and
+thus available for assignment.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+------------------------------------------------------------------+
+| **resource** | Type of resource to release |
++----------------+------------------------------------------------------------------+
+| **key** | SQL-like string specifying key to check of resource to release |
++----------------+------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-----------------+-------------------------------------------------+
+| **success** | Resource successfully released |
++-----------------+-------------------------------------------------+
+| **not-found** | Resource referenced does not exist |
++-----------------+-------------------------------------------------+
+| **failure** | Resource release failed for some other reason |
++-----------------+-------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+
+
+
+Reserve node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **reserve** node is used to reserve a particular type of resource..
+For example, this might be used to reserve a port on a particular
+switch.
+
+Attributes
+^^^^^^^^^^
+
++----------------+----------------------------------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+----------------------------------------------------------------------------------------------+
+| **resource** | Type of resource to reserve |
++----------------+----------------------------------------------------------------------------------------------+
+| **key** | SQL-like string specifying criteria for reservation |
++----------------+----------------------------------------------------------------------------------------------+
+| **select** | String to specify, if **key** matches multiple entries, which entry should take precedence |
++----------------+----------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+----------------------------------------------------+
+| **success** | Resource requested was successfully reserved |
++---------------+----------------------------------------------------+
+| **failure** | Resource requested was not successfully reserved |
++---------------+----------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Save node
+~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **save** node is used to save information about a particular resource
+to persistent storage. For example, this might be used to save
+information about a particular uni-port.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+------------------------------------------------------------------------------------------+
+| **resource** | Type of resource to save |
++----------------+------------------------------------------------------------------------------------------+
+| **key** | SQL-like string specifying criteria for retrieval |
++----------------+------------------------------------------------------------------------------------------+
+| **force** | If "true", save resource even if this resource is already stored in persistent storage |
++----------------+------------------------------------------------------------------------------------------+
+| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext |
++----------------+------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to save (columns) are specified as parameters, with each name
+corresponding to a column name and each value corresponding to the value
+to set.
+
+Outcomes
+^^^^^^^^
+
++---------------+-------------------------------+
+| **success** | Resource successfully saved |
++---------------+-------------------------------+
+| **failure** | Resource save failed |
++---------------+-------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+
+
+Update node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **update** node is used to update information about a particular
+resource to persistent storage.
+
+Attributes
+^^^^^^^^^^
+
++----------------+----------------------------------------------------------------------------------------+
+| **plugin** | Fully qualified Java class of resource adaptor to be used |
++----------------+----------------------------------------------------------------------------------------+
+| **resource** | Type of resource to update |
++----------------+----------------------------------------------------------------------------------------+
+| **key** | SQL-like string specifying criteria for retrieval |
++----------------+----------------------------------------------------------------------------------------+
+| **pfx** | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext |
++----------------+----------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to save (columns) are specified as parameters, with each name
+corresponding to a column name and each value corresponding to the value
+to set.
+
+Outcomes
+^^^^^^^^
+
++---------------+-------------------------------+
+| **success** | Resource successfully saved |
++---------------+-------------------------------+
+| **failure** | Resource save failed |
++---------------+-------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+
+
+
+
+
+
+
+