blob: 3bdeabcfac5c9f04b783d4e692344c0558164d2f [file] [log] [blame]
--- 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
^^^^^^^
::
<block>
<record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
<parameter name="file" value="/tmp/sample_r1.log" />
<parameter name="field1" value="__TIMESTAMP__"/>
<parameter name="field2" value="RESERVED"/>
<parameter name="field3" value="$asePort.uni_circuit_id"/>
</record>
<return status="success">
<parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
</return>
</block>
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
^^^^^^^
::
<call rpc="svc-topology-reserve" mode="sync" />
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
^^^^^^^
::
<for index="i" start="0" end="`$service-data.universal-cpe-ft.l2-switch-interfaces_length`">
<record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
<parameter name="logger" value="message-log"/>
<parameter name="level" value="info"/>
<parameter name="field1" value="`'current l2-switch-interface name is ' + $service-data.universal-cpe-ft.l2-switch-interfaces[$i].name`"/>
</record>
</for>
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
^^^^^^^
::
<return status="failure">
<parameter name="error-code" value="1542" />
<parameter name="error-message" value="Activation failure" />
</return>
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
^^^^^^^
::
<set>
<parameter name="vlan" value="$network.provider-segmentation-id" />
</set>
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
^^^^^^^
::
<switch test="$uni-cir-units">
<outcome value="Mbps">
<reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
pfx="asePort">
<outcome value="success">
<return status="success">
<parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
</return>
</outcome>
<outcome value="Other">
<return status="failure">
<parameter name="error-code" value="1010" />
<parameter name="error-message" value="No ports found that match criteria" />
</return>
</outcome>
</reserve>
</outcome>
<outcome value="Gbps">
<reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value*1000"
pfx="asePort">
<outcome value="success">
<return status="success">
<parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
</return>
</outcome>
<outcome value="Other">
<return status="failure">
<parameter name="error-code" value="1010" />
<parameter name="error-message" value="No ports found that match criteria" />
</return>
</outcome>
</reserve>
</outcome>
</switch>
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
^^^^^^^
::
<configure adaptor="org.onap.ccsdk.sli.adaptors.emt.EmtAdaptor"
key="$uni-circuit-id" activate="true">
<parameter name="circuit.id" value="$uni-circuit-id" />
<parameter name="subscriber.name" value="$subscriber-name" />
<parameter name="emt.clli" value="$edge-device-clli" />
<parameter name="port.tagging" value="$port-tagging" />
<parameter name="port.mediaSpeed" value="$media-speed" />
<parameter name="location.state" value="$uni-location-state" />
<parameter name="location.city" value="$uni-location-city" />
<parameter name="cosCategory" value="$cos-category" />
<parameter name="gosProfile" value="$gos-profile" />
<parameter name="lldp" value="$asePort.resource-lldp" />
<parameter name="mtu" value="$asePort.resource-mtu" />
<outcome value="success">
<block>
<record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
<parameter name="file" value="/tmp/sample_r1.log" />
<parameter name="field1" value="__TIMESTAMP__"/>
<parameter name="field2" value="ACTIVE"/>
<parameter name="field3" value="$uni-circuit-id"/>
</record>
<return status="success">
<parameter name="edge-device-clli" value="$asePort.resource-emt-clli" />
</return>
</block>
</outcome>
<outcome value="already-active">
<return status="failure">
<parameter name="error-code" value="1590" />
<parameter name="error-message" value="Port already active" />
</return>
</outcome>
<outcome value="Other">
<return status="failure">
<parameter name="error-code" value="1542" />
<parameter name="error-message" value="Activation failure" />
</return>
</outcome>
</configure>
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
^^^^^^^
::
<execute plugin="org.onap.ccsdk.sli.plugins.HelloWorld"
method="log">
<parameter name="message" value="Hello, world!" />
<outcome value="success">
<return status="success"/>
</outcome>
<outcome value="not-found">
<return status="failure">
<parameter name="error-code" value="1590" />
<parameter name="error-message" value="Could not locate plugin" />
</return>
</outcome>
<outcome value="Other">
<return status="failure">
<parameter name="error-code" value="1542" />
<parameter name="error-message" value="Internal error" />
</return>
</outcome>
</execute>
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
^^^^^^^
::
<record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
<parameter name="file" value="/tmp/sample_r1.log" />
<parameter name="field1" value="__TIMESTAMP__"/>
<parameter name="field2" value="ACTIVE"/>
<parameter name="field3" value="$uni-circuit-id"/>
</record>
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
^^^^^^^
::
<delete plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="uni_circuit_id == $uni-circuit-id">
<outcome value="true">
<return status="success"/>
</outcome>
<outcome value="false">
<return status="failure"/>
</outcome>
</delete>
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
^^^^^^^
::
<exists plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="uni_circuit_id == $uni-circuit-id">
<outcome value="true">
<return status="success"/>
</outcome>
<outcome value="false">
<return status="failure"/>
</outcome>
</exists>
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
^^^^^^^
::
<get-resource plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="uni_circuit_id == $uni-circuit-id"
pfx="current-port">
<outcome value="success">
<return status="success"/>
</outcome>
<outcome value="not-found">
<return status="failure"/>
</outcome>
<outcome value="failure">
<return status="failure"/>
</outcome>
</get-resource>
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
^^^^^^^
::
<is-available plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value">
<outcome value="true">
<return status="success"/>
</outcome>
<outcome value="false">
<return status="failure"/>
</outcome>
</is-available>
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
^^^^^^^
::
<notify plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
action="ADD">
<outcome value="success">
<return status="success"/>
</outcome>
<outcome value="Other">
<return status="failure"/>
</outcome>
</notify>
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
^^^^^^^
::
<release plugin="org.onap.ccsdk.sli.adaptors.SampleServiceResource"
resource="ase-port"
key="uni_circuit_id == $uni-circuit-id">
<outcome value="success">
<return status="success"/>
</outcome>
<outcome value="not-found">
<return status="failure"/>
</outcome>
<outcome value="failure">
<return status="failure"/>
</outcome>
</release>
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
^^^^^^^
::
<reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
resource="ase-port"
key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
select="min(speed)">
<outcome value="success">
<return status="success"/>
</outcome>
<outcome value="failure">
<return status="failure"/>
</outcome>
</reserve>
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
^^^^^^^
::
<save plugin="`$sample-resource-plugin`" resource="vnf"
key="vnf-name = $requests.vnf.vnf-name" force="true"
pfx="requests.vnf">
<parameter name="vnf-name"
value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
<parameter name="vnf-type" value="vce" />
<parameter name="orchestration-status" value="pending-create" />
<parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
<parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
<parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
</save>
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
^^^^^^^
::
<update plugin="`$sample-resource-plugin`" resource="vnf"
key="vnf-name = $requests.vnf.vnf-name"
pfx="requests.vnf">
<parameter name="vnf-name"
value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
<parameter name="vnf-type" value="vce" />
<parameter name="orchestration-status" value="pending-create" />
<parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
<parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
<parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
</update>