[SDNC-7] summary

added support for new fields in the metrics logger

Change-Id: I93e128a6275203005446ce56c0f0bc4e0867f888
Signed-off-by: Rich Tabedzki <richard.tabedzki@att.com>
diff --git a/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBLIBResourceActivator.java b/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBLIBResourceActivator.java
index ea4c52c..150a9a8 100644
--- a/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBLIBResourceActivator.java
+++ b/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBLIBResourceActivator.java
@@ -96,7 +96,6 @@
 		String regName = jdbcDataSource.getClass().getName();
 
 		LOG.info("Registering DBResourceManager service "+regName);
-//		registration = ctx.registerService(regName, jdbcDataSource, null);
 		registration = ctx.registerService(new String[] { regName, DbLibService.class.getName(), "javax.sql.DataSource" }, jdbcDataSource, null);
 	}
 
diff --git a/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBResourceManager.java b/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBResourceManager.java
index 3c3ef94..5cf2953 100644
--- a/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBResourceManager.java
+++ b/dblib/provider/src/main/java/org/openecomp/sdnc/sli/resource/dblib/DBResourceManager.java
@@ -818,7 +818,6 @@
 
 	public java.util.logging.Logger getParentLogger()
 			throws SQLFeatureNotSupportedException {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
diff --git a/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java b/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
index 98513ca..14b1f00 100644
--- a/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
+++ b/sli/common/src/main/java/org/openecomp/sdnc/sli/MetricLogger.java
@@ -54,6 +54,8 @@
     public static final String STATUS_CODE = "X-ECOMP-StatusCode";
     public static final String RESPONSE_CODE = "X-ECOMP-ResponseCode";
     public static final String RESPONSE_DESCRIPTION = "X-ECOMP-ResponseDescription";
+    public static final String INSTANCE_UUID = "X-ECOMP-InstanceUUID";
+    public static final String CATEGORY_LOG_LEVEL = "X-ECOMP-CategoryLogLevel";
     public static final String SEVERITY = "X-ECOMP-Severity";
     public static final String SERVER_IP_ADDRESS = "X-ECOMP-ServerIpAddress";
     public static final String ELAPSED_TIME = "X-ECOMP-ElapsedTime";
@@ -170,6 +172,22 @@
         MDC.put(RESPONSE_DESCRIPTION, responseDesc);
     }
 
+    public String getInstanceUUID() {
+	return MDC.get(INSTANCE_UUID);
+    }
+
+    private void setInstanceUUID(String instanceUUID) {
+	MDC.put(INSTANCE_UUID, instanceUUID);
+    }
+
+    public String getCategoryLogLevel() {
+	return MDC.get(CATEGORY_LOG_LEVEL);
+    }
+
+    private void setCategoryLogLevel(String categoryLogLevel) {
+	MDC.put(CATEGORY_LOG_LEVEL, categoryLogLevel);
+    }
+    
     public String getSeverity() {
         return MDC.get(SEVERITY);
     }
diff --git a/src/site/apt/nodes.apt b/src/site/apt/nodes.apt
index f49ca00..b8ce987 100644
--- a/src/site/apt/nodes.apt
+++ b/src/site/apt/nodes.apt
@@ -1,953 +1,953 @@
-~~~

+~~~
 ~~ ============LICENSE_START=======================================================
 ~~ openECOMP : SDN-C
 ~~ ================================================================================
 ~~ 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

+~~ 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}<<block>>}}

-

-        *  {{{Call node}<<call>>}}

-

-        *  {{{For node}<<for>>}}

-

-        *  {{{Return node}<<return>>}}

-

-        *  {{{Set node}<<set>>}}

-

-        *  {{{Switch node}<<switch>>}}

-

-     *  Device Management

-

-        *  {{{Configure node}<<configure>>}}

-

-     *  Java Plugin Support

-

-        *  {{{Execute node}<<execute>>}}

-

-     *  Recording

-

-        *  {{{Record node}<<record>>}}

-

-     *  Resource Management

-

-        *  {{{Delete node}<<delete>>}}

-

-        *  {{{Exists node}<<exists>>}}

-

-        *  {{{Get-resource node}<<get-resource>>}}

-

-        *  {{{Is-available node}<<is-available>>}}

-

-        *  {{{Notify node}<<notify>>}}

-

-        *  {{{Release node}<<release>>}}

-

-        *  {{{Reserve node}<<reserve>>}}

-

-        *  {{{Save node}<<save>>}}

-

-        *  {{{Update node}<<update>>}}

-

-

-* 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.openecomp.sdnc.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

-*----------*---------+

-   .

-

-*** 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.openecomp.sdnc.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.adaptor.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.openecomp.sdnc.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.openecomp.sdnc.sli.plugin.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.openecomp.sdnc.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.samplesvc.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.openecomp.sdnc.sli.resource.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>

-+-------------------+

-

+~~ ============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}<<block>>}}
+
+        *  {{{Call node}<<call>>}}
+
+        *  {{{For node}<<for>>}}
+
+        *  {{{Return node}<<return>>}}
+
+        *  {{{Set node}<<set>>}}
+
+        *  {{{Switch node}<<switch>>}}
+
+     *  Device Management
+
+        *  {{{Configure node}<<configure>>}}
+
+     *  Java Plugin Support
+
+        *  {{{Execute node}<<execute>>}}
+
+     *  Recording
+
+        *  {{{Record node}<<record>>}}
+
+     *  Resource Management
+
+        *  {{{Delete node}<<delete>>}}
+
+        *  {{{Exists node}<<exists>>}}
+
+        *  {{{Get-resource node}<<get-resource>>}}
+
+        *  {{{Is-available node}<<is-available>>}}
+
+        *  {{{Notify node}<<notify>>}}
+
+        *  {{{Release node}<<release>>}}
+
+        *  {{{Reserve node}<<reserve>>}}
+
+        *  {{{Save node}<<save>>}}
+
+        *  {{{Update node}<<update>>}}
+
+
+* 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.openecomp.sdnc.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
+*----------*---------+
+   .
+
+*** 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.openecomp.sdnc.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.adaptor.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.openecomp.sdnc.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.openecomp.sdnc.sli.plugin.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.openecomp.sdnc.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.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.openecomp.sdnc.sli.resource.samplesvc.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.openecomp.sdnc.sli.resource.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>
++-------------------+
+