~~~ ~~ ============LICENSE_START======================================================= ~~ ONAP : CCSDK ~~ ================================================================================ ~~ Copyright (C) 2017 AT&T Intellectual Property. All rights ~~ reserved. ~~ ================================================================================ ~~ Licensed under the Apache License, Version 2.0 (the "License"); ~~ you may not use this file except in compliance with the License. ~~ You may obtain a copy of the License at ~~ ~~ http://www.apache.org/licenses/LICENSE-2.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. ~~ ============LICENSE_END========================================================= ~~~ --- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 --- Supported node types The following built-in node types are currently supported: * Flow Control * {{{Block node}<>}} * {{{Call node}<>}} * {{{For node}<>}} * {{{Return node}<>}} * {{{Set node}<>}} * {{{Switch node}<>}} * Device Management * {{{Configure node}<>}} * Java Plugin Support * {{{Execute node}<>}} * Recording * {{{Record node}<>}} * Resource Management * {{{Delete node}<>}} * {{{Exists node}<>}} * {{{Get-resource node}<>}} * {{{Is-available node}<>}} * {{{Notify node}<>}} * {{{Release node}<>}} * {{{Reserve node}<>}} * {{{Save node}<>}} * {{{Update node}<>}} * Flow Control ** Block node *** Description A <> node is used to executes a set of nodes. *** Attributes *--------------*--------------------------------------------+ | <> | if , 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 <> node is used to call another graph *** Attributes *--------------*-------+ | <> | Module of directed graph to call. If unset, defaults to that of calling graph *--------------*-------+ | <> | rpc of directed graph to call. *--------------*-------+ | <> | version of graph to call, If unset, uses active version. *--------------*-------+ | <> | mode (sync/async) of graph to call. If unset, defaults to that of calling graph. *--------------*-------+ *** Parameters Not applicable *** Outcomes *----------*---------+ | <> | Sub graph returned success *----------*---------+ | <> | Graph not found *----------*---------+ | <> | Subgraph returned success *----------*---------+ . *** Example +-------------------+ +-------------------+ **For node *** Description A <> node provides a fixed iteration looping mechanism, similar to the Java for loop *** Attributes *--------------*-------+ | <> | index variable *--------------*-------+ | <> | initial value *--------------*-------+ | <> | maximum value *--------------*-------+ *** Parameters Not applicable. *** Outcomes Not applicable. The <> node has no outcomes. *** Example +-------------------+ +-------------------+ **Return node *** Description A <> node is used to return a status to the invoking MD-SAL application *** Attributes *--------------*-------+ | <> | Status value to return ( or ) *--------------*-------+ *** Parameters The following optional parameters may be passed to convey more detailed status information. *------------*-----------+ | <> | A brief, usually numeric, code indicating the error condition *------------*-----------+ | <> | A more detailed error message *------------*-----------+ *** Outcomes Not applicable. The <> node has no outcomes. *** Example +-------------------+ +-------------------+ **Set node *** Description A <> node is used to set one or more values in the execution context *** Attributes *--------------*-------+ | <> | 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 <> node has no outcomes. *** Example +-------------------+ +-------------------+ **Switch node *** Description A <> node is used to make a decision based on its <> attribute. *** Attributes *--------------*-------+ | <> | Condition to test *--------------*-------+ *** Parameters None *** Outcomes Depends on the <> condition *** Example +-------------------+ +-------------------+ * Device Management **Configure node *** Description A <> node is used to configure a device. *** Attributes *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Activate device/interface, for devices that support a separate activation step. *--------------*-------+ | <> | SQL-like string specifying criteria for item to configure *--------------*-------+ *** Parameters Specific to device adaptor. *** Outcomes *-----------*-------+ | <> | Device successfully configured *-----------*-------+ | <> | Element to be configured does not exist. *-----------*--------+ | <> | Element is not in a state where it can be configured/activated *-----------*-------+ | <> | Attempt to activate element that is already active *-----------*-------+ | <> | Configure failed for some other reason *-----------*-------+ *** Example +-------------------+ +-------------------+ * Java Plugin Support **Execute node *** Description An <> node is used to execute Java code supplied as a plugin *** Attributes *--------------*-------+ | <> | Fully qualified Java class of plugin to be used *--------------*-------+ | <> | 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 *-----------*-------+ | <> | Device successfully configured *-----------*-------+ | <> | Plugin class could not be loaded *-----------*--------+ | <> | Named method taking (Map, SvcLogicContext) could not be found *-----------*-------+ | <> | Configure failed for some other reason *-----------*-------+ *** Example +-------------------+ +-------------------+ * Recording ** Record node *** Description A <> node is used to record an event. For example, this might be used to log provisioning events. *** Attributes *--------------*-------+ | <> | 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 *------------*-----------+ | <> | The file to which the record should be written *------------*-----------+ | <> | First field to write. There will be <> parameters for each field to write, from <> through <>. A special value __TIMESTAMP__ may be assigned to a field to insert the current timestamp *------------*-----------+ *** Outcomes *----------*---------+ | <> | Record successfully written *----------*---------+ | <> | Record could not be successfully written *----------*---------+ *** Example +-------------------+ +-------------------+ * Resource Management ** Delete node *** Description A <> node is used to delete a resource from the local resource inventory. *** Attributes *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Type of resource to delete *--------------*-------+ | <> | SQL-like string specifying key to delete *--------------*-------+ *** Parameters None *** Outcomes *-----------*-------+ | <> | Resource specified deleted successfully. *-----------*-------+ | > | Resource specified was not deleted *-----------*-------+ *** Example +-------------------+ +-------------------+ ** Exists node *** Description An <> 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 *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Type of resource to check *--------------*-------+ | <> | SQL-like string specifying key to check for *--------------*-------+ *** Parameters None *** Outcomes *-----------*-------+ | <> | Resource specified exists. *-----------*-------+ | <> | Resource specified is unknown *-----------*-------+ *** Example +-------------------+ +-------------------+ ** Get-resource node *** Description A <> 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 *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Type of resource to retrieve *--------------*-------+ | <> | SQL-like string specifying criteria for retrieval *--------------*-------+ | <> | Prefix to add to context variable names set for data retrieved *--------------*-------+ | <> | String to specify, if <> matches multiple entries, which entry should take precedence *--------------*-------+ *** Parameters None *** Outcomes *-----------*-------+ | <> | Resource requested was successfully reserved *-----------*-------+ | <> | Resource requested was not successfully reserved *-----------*-------+ *** Example +-------------------+ +-------------------+ ** Save node *** Description A <> 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 *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Type of resource to save *--------------*-------+ | <> | SQL-like string specifying criteria for retrieval *--------------*-------+ | <> | If "true", save resource even if this resource is already stored in persistent storage *--------------*-------+ | <> | 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 *-----------*-------+ | <> | Resource successfully saved *-----------*-------+ | <> | Resource save failed *-----------*-------+ *** Example +-------------------+ +-------------------+ ** Update node *** Description An <> node is used to update information about a particular resource to persistent storage. *** Attributes *--------------*-------+ | <> | Fully qualified Java class of resource adaptor to be used *--------------*-------+ | <> | Type of resource to update *--------------*-------+ | <> | SQL-like string specifying criteria for retrieval *--------------*-------+ | <> | 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 *-----------*-------+ | <> | Resource successfully saved *-----------*-------+ | <> | Resource save failed *-----------*-------+ *** Example +-------------------+ +-------------------+