[VERSION] Update version to 1.0.0
[sdnc/core.git] / src / site / apt / nodes.apt
1 ~~~
2 ~~ ============LICENSE_START=======================================================
3 ~~ openECOMP : SDN-C
4 ~~ ================================================================================
5 ~~ Copyright (C) 2017 AT&T Intellectual Property. All rights
6 ~~                                              reserved.
7 ~~ ================================================================================
8 ~~ Licensed under the Apache License, Version 2.0 (the "License");
9 ~~ you may not use this file except in compliance with the License.
10 ~~ You may obtain a copy of the License at
11 ~~ 
12 ~~      http://www.apache.org/licenses/LICENSE-2.0
13 ~~ 
14 ~~ Unless required by applicable law or agreed to in writing, software
15 ~~ distributed under the License is distributed on an "AS IS" BASIS,
16 ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 ~~ See the License for the specific language governing permissions and
18 ~~ limitations under the License.
19 ~~ ============LICENSE_END=========================================================
20 ~~~
21
22       ---
23       Service Logic Interpreter
24       ---
25       Dan Timoney
26       ---
27       2014-11-12
28       ---
29
30 Supported node types
31
32    The following built-in node types are currently supported:
33
34      *  Flow Control
35
36         *  {{{Block node}<<block>>}}
37
38         *  {{{Call node}<<call>>}}
39
40         *  {{{For node}<<for>>}}
41
42         *  {{{Return node}<<return>>}}
43
44         *  {{{Set node}<<set>>}}
45
46         *  {{{Switch node}<<switch>>}}
47
48      *  Device Management
49
50         *  {{{Configure node}<<configure>>}}
51
52      *  Java Plugin Support
53
54         *  {{{Execute node}<<execute>>}}
55
56      *  Recording
57
58         *  {{{Record node}<<record>>}}
59
60      *  Resource Management
61
62         *  {{{Delete node}<<delete>>}}
63
64         *  {{{Exists node}<<exists>>}}
65
66         *  {{{Get-resource node}<<get-resource>>}}
67
68         *  {{{Is-available node}<<is-available>>}}
69
70         *  {{{Notify node}<<notify>>}}
71
72         *  {{{Release node}<<release>>}}
73
74         *  {{{Reserve node}<<reserve>>}}
75
76         *  {{{Save node}<<save>>}}
77
78         *  {{{Update node}<<update>>}}
79
80
81 * Flow Control
82
83 ** Block node
84
85 *** Description
86
87    A <<block>> node is used to executes a set of nodes.
88
89 *** Attributes
90
91 *--------------*--------------------------------------------+
92 | <<atomic>>   | if <true>, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out.
93 *--------------*--------------------------------------------+
94
95 *** Parameters
96
97   None
98
99 *** Outcomes
100
101   None
102
103 *** Example
104
105 +-----------------+
106 <block>
107   <record plugin="org.openecomp.sdnc.sli.recording.FileRecorder">
108     <parameter name="file" value="/tmp/sample_r1.log" />
109     <parameter name="field1" value="__TIMESTAMP__"/>
110     <parameter name="field2" value="RESERVED"/>
111     <parameter name="field3" value="$asePort.uni_circuit_id"/>
112   </record>
113   <return status="success">
114     <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
115   </return>
116 </block>
117 +-----------------+
118
119
120
121 **Call node
122
123 *** Description
124
125   A <<call>> node is used to call another graph
126
127 *** Attributes
128
129 *--------------*-------+
130 | <<module>>   | Module of directed graph to call.  If unset, defaults to that of calling graph
131 *--------------*-------+
132 | <<rpc>>      | rpc of directed graph to call.
133 *--------------*-------+
134 | <<version>>  | version of graph to call,  If unset, uses active version.
135 *--------------*-------+
136 | <<mode>>     | mode (sync/async) of graph to call.   If unset, defaults to that of calling graph.
137 *--------------*-------+
138
139
140
141 *** Parameters
142
143   Not applicable
144
145 *** Outcomes
146
147 *----------*---------+
148 | <<success>> | Sub graph returned success
149 *----------*---------+
150 | <<not-found>> | Graph not found
151 *----------*---------+
152 | <<failure>> | Subgraph returned success
153 *----------*---------+
154    .
155
156 *** Example
157
158 +-------------------+
159 <call rpc="svc-topology-reserve" mode="sync" />
160 +-------------------+
161
162 **For node
163
164 *** Description
165
166   A <<for>> node provides a fixed iteration looping mechanism, similar to the Java for loop
167
168 *** Attributes
169
170 *--------------*-------+
171 | <<index>>   | index variable
172 *--------------*-------+
173 | <<start>>    | initial value
174 *--------------*-------+
175 | <<end>>      | maximum value
176 *--------------*-------+
177
178
179 *** Parameters
180
181   Not applicable.
182
183 *** Outcomes
184
185   Not applicable.  The <<status>> node has no outcomes.
186
187 *** Example
188
189 +-------------------+
190 <for index="i" start="0" end="$network.num-segments">
191   <set>
192     <parameter name="$vlanlist" value="eval($vlanlist+','+$network.segment[i].provider-segmentation-id)"/>
193   </set>
194 </for>
195 +-------------------+
196
197 **Return node
198
199 *** Description
200
201   A <<return>> node is used to return a status to the invoking MD-SAL application
202
203 *** Attributes
204
205 *--------------*-------+
206 | <<status>>   | Status value to return (<success> or <failure>)
207 *--------------*-------+
208
209
210 *** Parameters
211
212   The following optional parameters may be passed to convey more
213   detailed status information.
214
215 *------------*-----------+
216 | <<error-code>> | A brief, usually numeric, code indicating the error condition
217 *------------*-----------+
218 | <<error-message>> | A more detailed error message
219 *------------*-----------+
220
221 *** Outcomes
222
223   Not applicable.  The <<status>> node has no outcomes.
224
225 *** Example
226
227 +-------------------+
228 <return status="failure">
229   <parameter name="error-code" value="1542" />
230   <parameter name="error-message" value="Activation failure" />
231 </return>
232 +-------------------+
233
234 **Set node
235
236 *** Description
237
238   A <<set>> node is used to set one or more values in the execution context
239
240 *** Attributes
241
242 *--------------*-------+
243 | <<only-if-unset>>   | If true the set node will only execute if the current value of the target is null
244 *--------------*-------+
245
246 *** Parameters
247
248   Values to be set are passed as parameters
249
250 *** Outcomes
251
252   Not applicable.  The <<set>> node has no outcomes.
253
254 *** Example
255
256 +-------------------+
257 <set>
258   <parameter name="vlan" value="$network.provider-segmentation-id" />
259 </set>
260 +-------------------+
261
262 **Switch node
263
264 *** Description
265
266   A <<switch>> node is used to make a decision based on its <<test>> attribute.
267
268 *** Attributes
269
270 *--------------*-------+
271 | <<test>>   | Condition to test
272 *--------------*-------+
273
274
275 *** Parameters
276
277   None
278
279
280 *** Outcomes
281
282   Depends on the <<test>> condition
283
284 *** Example
285
286 +-------------------+
287 <switch test="$uni-cir-units">
288   <outcome value="Mbps">
289     <reserve plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
290              resource="ase-port"
291              key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
292              pfx="asePort">
293
294       <outcome value="success">
295         <return status="success">
296           <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
297         </return>
298       </outcome>
299       <outcome value="Other">
300         <return status="failure">
301           <parameter name="error-code" value="1010" />
302           <parameter name="error-message" value="No ports found that match criteria" />
303         </return>
304       </outcome>
305     </reserve>
306   </outcome>
307   <outcome value="Gbps">
308     <reserve plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
309              resource="ase-port"
310              key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value*1000"
311              pfx="asePort">
312
313       <outcome value="success">
314         <return status="success">
315           <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
316         </return>
317       </outcome>
318       <outcome value="Other">
319         <return status="failure">
320           <parameter name="error-code" value="1010" />
321           <parameter name="error-message" value="No ports found that match criteria" />
322         </return>
323       </outcome>
324     </reserve>
325   </outcome>
326 </switch>
327 +-------------------+
328
329 * Device Management
330
331 **Configure node
332
333 *** Description
334
335   A <<configure>> node is used to configure a device.
336
337 *** Attributes
338
339 *--------------*-------+
340 | <<adaptor>>   | Fully qualified Java class of resource adaptor to be used
341 *--------------*-------+
342 | <<activate>> | Activate device/interface, for devices that support a separate activation step.
343 *--------------*-------+
344 | <<key>>      | SQL-like string specifying criteria for item to configure
345 *--------------*-------+
346
347 *** Parameters
348
349   Specific to device adaptor.
350
351 *** Outcomes
352
353 *-----------*-------+
354 | <<success>>  | Device successfully configured
355 *-----------*-------+
356 | <<not-found>> | Element to be configured does not exist.
357 *-----------*--------+
358 | <<not-ready>> | Element is not in a state where it can be configured/activated
359 *-----------*-------+
360 | <<already-active>> | Attempt to activate element that is already active
361 *-----------*-------+
362 | <<failure>> | Configure failed for some other reason
363 *-----------*-------+
364
365 *** Example
366
367 +-------------------+
368 <configure adaptor="org.openecomp.sdnc.sli.adaptor.emt.EmtAdaptor"
369            key="$uni-circuit-id" activate="true">
370   <parameter name="circuit.id" value="$uni-circuit-id" />
371   <parameter name="subscriber.name" value="$subscriber-name" />
372   <parameter name="emt.clli" value="$edge-device-clli" />
373   <parameter name="port.tagging" value="$port-tagging" />
374   <parameter name="port.mediaSpeed" value="$media-speed" />
375   <parameter name="location.state" value="$uni-location-state" />
376   <parameter name="location.city" value="$uni-location-city" />
377   <parameter name="cosCategory" value="$cos-category" />
378   <parameter name="gosProfile" value="$gos-profile" />
379   <parameter name="lldp" value="$asePort.resource-lldp" />
380   <parameter name="mtu" value="$asePort.resource-mtu" />
381   <outcome value="success">
382     <block>
383       <record plugin="org.openecomp.sdnc.sli.recording.FileRecorder">
384         <parameter name="file" value="/tmp/sample_r1.log" />
385         <parameter name="field1" value="__TIMESTAMP__"/>
386         <parameter name="field2" value="ACTIVE"/>
387         <parameter name="field3" value="$uni-circuit-id"/>
388       </record>
389       <return status="success">
390         <parameter name="edge-device-clli" value="$asePort.resource-emt-clli" />
391       </return>
392     </block>
393   </outcome>
394   <outcome value="already-active">
395     <return status="failure">
396       <parameter name="error-code" value="1590" />
397       <parameter name="error-message" value="Port already active" />
398     </return>
399   </outcome>
400   <outcome value="Other">
401     <return status="failure">
402       <parameter name="error-code" value="1542" />
403       <parameter name="error-message" value="Activation failure" />
404     </return>
405   </outcome>
406 </configure>
407 +-------------------+
408
409 * Java Plugin Support
410
411 **Execute node
412
413 *** Description
414
415   An <<execute>> node is used to execute Java code supplied as a plugin
416
417 *** Attributes
418
419 *--------------*-------+
420 | <<plugin>>   | Fully qualified Java class of plugin to be used
421 *--------------*-------+
422 | <<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)
423 *--------------*-------+
424
425 *** Parameters
426
427   Specific to plugin / method
428
429 *** Outcomes
430
431 *-----------*-------+
432 | <<success>>  | Device successfully configured
433 *-----------*-------+
434 | <<not-found>> | Plugin class could not be loaded
435 *-----------*--------+
436 | <<unsupported-method>> | Named method taking (Map, SvcLogicContext) could not be found
437 *-----------*-------+
438 | <<failure>> | Configure failed for some other reason
439 *-----------*-------+
440
441 *** Example
442
443 +-------------------+
444 <execute plugin="org.openecomp.sdnc.sli.plugin.HelloWorld"
445            method="log">
446   <parameter name="message" value="Hello, world!" />
447   <outcome value="success">
448       <return status="success"/>
449   </outcome>
450   <outcome value="not-found">
451     <return status="failure">
452       <parameter name="error-code" value="1590" />
453       <parameter name="error-message" value="Could not locate plugin" />
454     </return>
455   </outcome>
456   <outcome value="Other">
457     <return status="failure">
458       <parameter name="error-code" value="1542" />
459       <parameter name="error-message" value="Internal error" />
460     </return>
461   </outcome>
462 </execute>
463 +-------------------+
464
465 * Recording
466
467 ** Record node
468
469 *** Description
470
471   A <<record>> node is used to record an event.  For example, this might be used
472   to log provisioning events.
473
474 *** Attributes
475
476 *--------------*-------+
477 | <<plugin>>   | Fully qualified Java class to handle recording.
478 *--------------*-------+
479
480
481 *** Parameters
482
483  Parameters will depend on the plugin being used.  For the FileRecorder class,
484  the parameters are as follows
485
486 *------------*-----------+
487 | <<file>> | The file to which the record should be written
488 *------------*-----------+
489 | <<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
490 *------------*-----------+
491
492
493 *** Outcomes
494
495 *----------*---------+
496 | <<success>> | Record successfully written
497 *----------*---------+
498 | <<failure>> | Record could not be successfully written
499 *----------*---------+
500
501 *** Example
502
503 +-------------------+
504 <record plugin="org.openecomp.sdnc.sli.recording.FileRecorder">
505   <parameter name="file" value="/tmp/sample_r1.log" />
506   <parameter name="field1" value="__TIMESTAMP__"/>
507   <parameter name="field2" value="ACTIVE"/>
508   <parameter name="field3" value="$uni-circuit-id"/>
509 </record>
510 +-------------------+
511
512 * Resource Management
513
514 ** Delete node
515
516 *** Description
517
518   A <<delete>> node is used to delete a resource from the local resource inventory.
519
520 *** Attributes
521
522 *--------------*-------+
523 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
524 *--------------*-------+
525 | <<resource>> | Type of resource to delete
526 *--------------*-------+
527 | <<key>>      | SQL-like string specifying key to delete
528 *--------------*-------+
529
530 *** Parameters
531
532   None
533
534 *** Outcomes
535
536 *-----------*-------+
537 | <<success>>  | Resource specified deleted successfully.
538 *-----------*-------+
539 | <failure>> | Resource specified was not deleted
540 *-----------*-------+
541
542 *** Example
543
544 +-------------------+
545 <delete plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
546         resource="ase-port"
547         key="uni_circuit_id == $uni-circuit-id">
548   <outcome value="true">
549     <return status="success"/>
550   </outcome>
551   <outcome value="false">
552     <return status="failure"/>
553   </outcome>
554 </delete>
555 +-------------------+
556
557
558 ** Exists node
559
560 *** Description
561
562   An <<exists>> node is used to determine whether a particular
563   instance of a resource exists.  For example, this might be
564   used to test whether a particular switch CLLI is provisioned.
565
566 *** Attributes
567
568 *--------------*-------+
569 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
570 *--------------*-------+
571 | <<resource>> | Type of resource to check
572 *--------------*-------+
573 | <<key>>      | SQL-like string specifying key to check for
574 *--------------*-------+
575
576 *** Parameters
577
578   None
579
580 *** Outcomes
581
582 *-----------*-------+
583 | <<true>>  | Resource specified exists.
584 *-----------*-------+
585 | <<false>> | Resource specified is unknown
586 *-----------*-------+
587
588 *** Example
589
590 +-------------------+
591 <exists plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
592         resource="ase-port"
593         key="uni_circuit_id == $uni-circuit-id">
594   <outcome value="true">
595     <return status="success"/>
596   </outcome>
597   <outcome value="false">
598     <return status="failure"/>
599   </outcome>
600 </exists>
601 +-------------------+
602
603 ** Get-resource node
604
605 *** Description
606
607   A <<get-resource>> node is used to retrieve information about a
608   particular resource and make it available to other nodes in the
609   service logic tree.  For example, this might be used to
610   retrieve information about a particular uni-port.
611
612 *** Attributes
613
614 *--------------*-------+
615 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
616 *--------------*-------+
617 | <<resource>> | Type of resource to retrieve
618 *--------------*-------+
619 | <<key>>      | SQL-like string specifying criteria for retrieval
620 *--------------*-------+
621 | <<pfx>>      | Prefix to add to context variable names set for data retrieved
622 *--------------*-------+
623 | <<select>>      | String to specify, if key matches multiple entries, which entry should take precedence
624 *--------------*-------+
625 | <<order-by>>      | Prefix to add to context variable names set for data retrieved
626 *--------------*-------+
627
628 *** Parameters
629
630   None
631
632
633 *** Outcomes
634
635 *-----------*-------+
636 | <<success>>  | Resource successfully retrieved
637 *-----------*-------+
638 | <<not-found>> | Resource referenced does not exist
639 *-----------*-------+
640 | <<failure>> | Resource retrieve failed for some other reason
641 *-----------*-------+
642
643 *** Example
644
645 +-------------------+
646 <get-resource plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
647               resource="ase-port"
648               key="uni_circuit_id == $uni-circuit-id"
649               pfx="current-port">
650   <outcome value="success">
651     <return status="success"/>
652   </outcome>
653   <outcome value="not-found">
654     <return status="failure"/>
655   </outcome>
656   <outcome value="failure">
657     <return status="failure"/>
658   </outcome>
659 </get-resource>
660 +-------------------+
661
662 ** Is-available node
663
664 *** Description
665
666   An <<is-available>> node is used to determine whether a particular
667   type of resource is available.  For example, this might be used to
668   test whether any ports are available for assignment on a particular switch.
669
670 *** Attributes
671
672 *--------------*-------+
673 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
674 *--------------*-------+
675 | <<resource>> | Type of resource to check
676 *--------------*-------+
677 | <<key>>      | SQL-like string specifying key to check for
678 *--------------*-------+
679 | <<pfx>>      | Prefix to add to context variable names set for data retrieved
680 *--------------*-------+
681
682 *** Parameters
683
684   None
685
686 *** Outcomes
687
688 *-----------*-------+
689 | <<true>>  | Resource requested is available
690 *-----------*-------+
691 | <<false>> | Resource requested is not available
692 *-----------*-------+
693
694 *** Example
695
696 +-------------------+
697 <is-available plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
698               resource="ase-port"
699               key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value">
700   <outcome value="true">
701     <return status="success"/>
702   </outcome>
703   <outcome value="false">
704     <return status="failure"/>
705   </outcome>
706 </is-available>
707 +-------------------+
708
709 ** Notify node
710
711 *** Description
712
713   A <<notify>> node is used to inform an external application (e.g. A&AI) that a resource was
714   updated.
715
716 *** Attributes
717
718 *--------------*-------+
719 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
720 *--------------*-------+
721 | <<resource>> | Identifies resource that was updated
722 *--------------*-------+
723 | <<action>>      | Action that triggered notification to be sent (ADD/UPDATE/DELETE)
724 *--------------*-------+
725
726 *** Parameters
727
728   None
729
730 *** Outcomes
731
732 *-----------*-------+
733 | <<success>>  | Notification was successful
734 *-----------*-------+
735 | <<failure>> | Notification failed is not available
736 *-----------*-------+
737
738 *** Example
739
740 +-------------------+
741 <notify plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
742               resource="ase-port"
743               action="ADD">
744   <outcome value="success">
745     <return status="success"/>
746   </outcome>
747   <outcome value="Other">
748     <return status="failure"/>
749   </outcome>
750 </notify>
751 +-------------------+
752
753 ** Release node
754
755 *** Description
756
757   A <<release>> node is used to mark a resource as no longer in use, and thus
758   available for assignment.
759
760 *** Attributes
761
762 *--------------*-------+
763 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
764 *--------------*-------+
765 | <<resource>> | Type of resource to release
766 *--------------*-------+
767 | <<key>>      | SQL-like string specifying key to check of resource to release
768 *--------------*-------+
769
770 *** Parameters
771
772   None
773
774 *** Outcomes
775
776 *-----------*-------+
777 | <<success>>  | Resource successfully released
778 *-----------*-------+
779 | <<not-found>> | Resource referenced does not exist
780 *-----------*-------+
781 | <<failure>> | Resource release failed for some other reason
782 *-----------*-------+
783
784 *** Example
785
786 +-------------------+
787 <release plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
788          resource="ase-port"
789          key="uni_circuit_id == $uni-circuit-id">
790   <outcome value="success">
791     <return status="success"/>
792   </outcome>
793   <outcome value="not-found">
794     <return status="failure"/>
795   </outcome>
796   <outcome value="failure">
797     <return status="failure"/>
798   </outcome>
799 </release>
800 +-------------------+
801
802
803 ** Reserve node
804
805 *** Description
806
807   A <<reserve>> node is used to reserve a particular
808   type of resource..  For example, this might be used to
809   reserve a port on a particular switch.
810
811 *** Attributes
812
813 *--------------*-------+
814 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
815 *--------------*-------+
816 | <<resource>> | Type of resource to reserve
817 *--------------*-------+
818 | <<key>>      | SQL-like string specifying criteria for reservation
819 *--------------*-------+
820 | <<select>>   | String to specify, if <<key>> matches multiple entries, which entry should take precedence
821 *--------------*-------+
822
823 *** Parameters
824
825   None
826
827 *** Outcomes
828
829 *-----------*-------+
830 | <<success>>  | Resource requested was successfully reserved
831 *-----------*-------+
832 | <<failure>> | Resource requested was not successfully reserved
833 *-----------*-------+
834
835 *** Example
836
837 +-------------------+
838 <reserve plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
839          resource="ase-port"
840          key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
841          select="min(speed)">
842   <outcome value="success">
843     <return status="success"/>
844   </outcome>
845   <outcome value="failure">
846     <return status="failure"/>
847   </outcome>
848 </reserve>
849 +-------------------+
850
851 ** Save node
852
853 *** Description
854
855   A <<save>> node is used to save information about a
856   particular resource to persistent storage.  For example, this might be used to
857   save information about a particular uni-port.
858
859 *** Attributes
860
861 *--------------*-------+
862 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
863 *--------------*-------+
864 | <<resource>> | Type of resource to save
865 *--------------*-------+
866 | <<key>>      | SQL-like string specifying criteria for retrieval
867 *--------------*-------+
868 | <<force>>    | If "true", save resource even if this resource is already stored in persistent storage
869 *--------------*-------+
870 | <<pfx>>      | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext
871 *--------------*-------+
872
873 *** Parameters
874
875   Values to save (columns) are specified as parameters, with each name
876   corresponding to a column name and each value corresponding to the
877   value to set.
878
879 *** Outcomes
880
881 *-----------*-------+
882 | <<success>>  | Resource successfully saved
883 *-----------*-------+
884 | <<failure>> | Resource save failed
885 *-----------*-------+
886
887 *** Example
888
889 +-------------------+
890 <save plugin="`$sample-resource-plugin`" resource="vnf"
891     key="vnf-name = $requests.vnf.vnf-name" force="true"
892     pfx="requests.vnf">
893     <parameter name="vnf-name"
894         value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
895     <parameter name="vnf-type" value="vce" />
896     <parameter name="orchestration-status" value="pending-create" />
897     <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
898     <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
899     <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
900 </save>
901 +-------------------+
902
903 ** Update node
904
905 *** Description
906
907   An <<update>> node is used to update information about a
908   particular resource to persistent storage.
909
910 *** Attributes
911
912 *--------------*-------+
913 | <<plugin>>   | Fully qualified Java class of resource adaptor to be used
914 *--------------*-------+
915 | <<resource>> | Type of resource to update
916 *--------------*-------+
917 | <<key>>      | SQL-like string specifying criteria for retrieval
918 *--------------*-------+
919 | <<pfx>>      | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext
920 *--------------*-------+
921
922 *** Parameters
923
924   Values to save (columns) are specified as parameters, with each name
925   corresponding to a column name and each value corresponding to the
926   value to set.
927
928 *** Outcomes
929
930 *-----------*-------+
931 | <<success>>  | Resource successfully saved
932 *-----------*-------+
933 | <<failure>> | Resource save failed
934 *-----------*-------+
935
936 *** Example
937
938 +-------------------+
939 <update plugin="`$sample-resource-plugin`" resource="vnf"
940     key="vnf-name = $requests.vnf.vnf-name"
941     pfx="requests.vnf">
942     <parameter name="vnf-name"
943         value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
944     <parameter name="vnf-type" value="vce" />
945     <parameter name="orchestration-status" value="pending-create" />
946     <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
947     <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
948     <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
949 </update>
950 +-------------------+
951