2 xmlns='http://www.onap.org/sdnc/svclogic'
\r
3 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
\r
4 <method rpc='getpathsegment-create-simple-path' mode='sync'>
\r
7 <parameter name='match-type' value='network-name' />
\r
9 <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
\r
10 key='SELECT * from PATH_SEGMENT WHERE service_uuid = $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
\r
11 AND path_name = $db.forwarding-path[$path-index].path-name ORDER BY path_segment_seq'
\r
12 pfx='db.path-segment[]'>
\r
13 <outcome value='failure'>
\r
16 <parameter name='error-message' value="`'System error reading PATH_SEGMENT table for uuid '
\r
17 + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
\r
19 + $db.forwarding-path[$path-index].path-name`" />
\r
23 <outcome value='not-found'>
\r
26 <parameter name='error-message' value="`'No entries in PATH_SEGMENT table for uuid '
\r
27 + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-uuid
\r
29 + $db.forwarding-path[$path-index].path-name`" />
\r
33 <outcome value='success'>
\r
36 <parameter name='vnf-ids_length' value='0' />
\r
38 <for index='path-segment-index' start='0' end='`$db.path-segment_length`' >
\r
41 <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].source-association-uuid`' />
\r
42 <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />
\r
44 <switch test='`$path-segment-index == ( $db.path-segment_length - 1) `'>
\r
45 <outcome value='true'>
\r
47 <parameter name='vnf-ids[$vnf-ids_length]' value='`$db.path-segment[$path-segment-index].target-association-uuid`' />
\r
48 <parameter name='vnf-ids_length' value='`$vnf-ids_length + 1`' />
\r
54 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
55 resource="custom-query"
\r
56 key="format = 'resource'"
\r
59 pfx="aai.service-instances" >
\r
60 <parameter name="start[0]" value="`'nodes/service-instances?model-invariant-id=' + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
\r
61 <parameter name="start_length" value="1" />
\r
62 <outcome value='not-found'>
\r
65 <parameter name='error-message' value="`'No run-time service instances in AAI for invariant uuid '
\r
66 + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
\r
70 <outcome value='failure'>
\r
73 <parameter name='error-message' value="`'System error calling AAI to get run-time service instances for invariant uuid '
\r
74 + $getpathsegment-topology-operation-input.service-information.onap-model-information.model-invariant-uuid`" />
\r
78 <outcome value='success'>
\r
81 <parameter name='runtime_length' value='0' />
\r
83 <for index='runtime-index' start='0' end='`$aai.service-instances.results_length`' >
\r
84 <switch test='`$aai.service-instances.results[$runtime-index].service-instance.orchestration-status`'>
\r
85 <outcome value='Active'>
\r
88 <parameter name='runtime-ids[$runtime_length]' value='`$aai.service-instances.results[$runtime-index].service-instance.service-instance-id`' />
\r
91 <parameter name='runtime_length' value='`$runtime_length + 1`' />
\r
98 <parameter name='serv-insts_length' value='0' />
\r
100 <for index='runtime-index' start='0' end='`$runtime_length`' >
\r
103 <parameter name='serv-inst.service-instance-id' value='`$runtime-ids[$runtime-index]`' />
\r
105 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
106 resource="custom-query"
\r
107 key="format = 'resource_and_url'"
\r
110 pfx="tmp.AnAI-data.si">
\r
111 <parameter name="start[0]" value="`'nodes/service-instance/' + $serv-inst.service-instance-id `" />
\r
112 <parameter name="start_length" value="1" />
\r
113 <outcome value='success'>
\r
115 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
\r
116 <parameter name="original_string" value="`$tmp.AnAI-data.si.results[0].url`" />
\r
117 <parameter name="regex" value="/"/>
\r
118 <parameter name="limit" value="11" />
\r
119 <parameter name="ctx_memory_result_key" value="split" />
\r
122 <parameter name='output-global-customer-id' value='`$split[6]`' />
\r
123 <parameter name='output-service-type' value='`$split[9]`' />
\r
124 <parameter name='output-service-role' value='`$tmp.AnAI-data.si.results[0].service-instance.service-role`' />
\r
130 <parameter name='mdsal-service.' value='' />
\r
131 <parameter name='serv-inst.api' value='' />
\r
133 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
\r
134 <parameter name="source" value="`$prop.restapi.service`"/>
\r
135 <parameter name="outputPath" value="tmp.service-url"/>
\r
136 <parameter name="target" value="{service-instance-id}"/>
\r
137 <parameter name="replacement" value="`$serv-inst.service-instance-id`"/>
\r
139 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r
140 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
\r
141 <parameter name='restapiUser' value='`$prop.controller.user`' />
\r
142 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
\r
143 <parameter name='format' value='json' />
\r
144 <parameter name='httpMethod' value='GET' />
\r
145 <parameter name="responsePrefix" value="mdsal-service" />
\r
146 <outcome value='success'>
\r
149 <parameter name='found-path' value='false' />
\r
151 <for silentFailure='true' index='fp-index' start='0' end='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path_length`' >
\r
152 <switch test='`$mdsal-service.service[0].service-data.forwarding-paths.forwarding-path[$fp-index].forwarding-path-name
\r
153 == $db.path-segment[0].path-name`'>
\r
154 <outcome value='true'>
\r
157 <parameter name='found-path' value='true' />
\r
164 <switch test='`$found-path`'>
\r
165 <outcome value='false'>
\r
167 <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-grapi' mode='sync' ></call>
\r
169 <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />
\r
172 <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />
\r
179 <outcome value='failure'>
\r
181 <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
\r
182 key='select forwarding_path_service_instance_id
\r
183 from SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
\r
184 where simple_service_instance_id = $serv-inst.service-instance-id'
\r
186 <outcome value='not-found'>
\r
188 <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-populate-from-vnfapi' mode='sync' ></call>
\r
189 <switch test='`$serv-inst.api`'>
\r
192 <parameter name='error-message' value="`'Failure finding service instance ' + $serv-inst.service-instance-id + ' in either GENERIC-REOURCE-API or VNF-API'`" />
\r
195 <outcome value='Other'>
\r
198 <parameter name='serv-insts[$serv-insts_length].' value='`$serv-inst.`' />
\r
201 <parameter name='serv-insts_length' value='`$serv-insts_length + 1`' />
\r
214 <call module='GENERIC-RESOURCE-API' rpc='getpathsegment-simple-match-pair' mode='sync' ></call>
\r
215 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >
\r
216 <parameter name='filename' value='/var/tmp/gps.log' />
\r
218 <for index='serv-index' start='0' end='`$serv-insts_length`' >
\r
219 <switch test='`$serv-insts[$serv-index].api`'>
\r
220 <outcome value='GR'>
\r
221 <switch test='`$serv-insts[$serv-index].path-segments_length`'>
\r
225 <outcome value='0'>
\r
228 <outcome value='Other'>
\r
230 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
231 <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />
\r
233 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
234 <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />
\r
237 <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />
\r
238 <parameter name='forwarding-path.forwarding-path-type' value='VNF' />
\r
239 <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />
\r
240 <parameter name='forwarding-path.service-paths.service-path_length' value='1' />
\r
241 <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'
\r
242 value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />
\r
243 <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />
\r
244 <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'
\r
245 value='`$serv-insts[$serv-index].service-instance-id`' />
\r
246 <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />
\r
247 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
\r
248 value='`$serv-insts[$serv-index].path-segments_length`' />
\r
251 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'
\r
253 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'
\r
254 value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
\r
255 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'
\r
256 value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
\r
257 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'
\r
258 value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
\r
259 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
\r
260 value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
\r
263 <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
\r
264 <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
\r
266 <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >
\r
269 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'
\r
270 value='`$ps-index + 1`' />
\r
271 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'
\r
272 value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />
\r
273 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'
\r
274 value='`$prev-network-name`' />
\r
275 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'
\r
276 value='`$prev-network-role`' />
\r
277 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'
\r
278 value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
\r
279 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'
\r
280 value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
\r
281 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'
\r
282 value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />
\r
285 <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
\r
286 <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
\r
291 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'
\r
292 value='`$ps-index + 2`' />
\r
293 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'
\r
294 value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />
\r
295 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'
\r
296 value='`$prev-network-name`' />
\r
297 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'
\r
298 value='`$prev-network-role`' />
\r
299 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'
\r
300 value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />
\r
303 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
\r
304 value='`$serv-insts[$serv-index].path-segments_length + 1`' />
\r
306 <switch test='`$serv-insts[$serv-index].api`'>
\r
307 <outcome value='GR'>
\r
309 <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />
\r
312 <outcome value='VNF'>
\r
314 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
315 <parameter name="ctx-destination" value="tmp.service-instance-id" />
\r
317 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
\r
318 <parameter name="source" value="`$prop.restapi.service`"/>
\r
319 <parameter name="outputPath" value="tmp.service-url"/>
\r
320 <parameter name="target" value="{service-instance-id}"/>
\r
321 <parameter name="replacement" value="`$tmp.service-instance-id`"/>
\r
323 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r
324 <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
\r
325 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
\r
326 <parameter name='restapiUser' value='`$prop.controller.user`' />
\r
327 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
\r
328 <parameter name='format' value='json' />
\r
329 <parameter name='httpMethod' value='PUT' />
\r
330 <parameter name="responsePrefix" value="mdsal-sr" />
\r
331 <outcome value='failure'>
\r
333 <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
\r
337 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
338 resource="service-instance"
\r
339 key="customer.global-customer-id = $output-global-customer-id
\r
340 AND service-subscription.service-type = $output-service-type
\r
341 AND service-instance.service-instance-id = $tmp.service-instance-id" >
\r
342 <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
\r
343 <parameter name="global-customer-id" value="`$output-global-customer-id`" />
\r
344 <parameter name="service-type" value="`$output-service-type`" />
\r
345 <parameter name="service-role" value="`$output-service-role`" />
\r
346 <outcome value='failure'>
\r
348 <parameter name='error-message' value="Failure creating service instance in AAI" />
\r
351 <outcome value='not-found'>
\r
353 <parameter name='error-message' value="Failure creating service instance in AAI" />
\r
357 <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
\r
358 key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
\r
359 (simple_service_instance_id, forwarding_path_service_instance_id)
\r
360 VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>
\r
364 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
\r
365 <parameter name="source" value="`$prop.restapi.forwarding-path`"/>
\r
366 <parameter name="outputPath" value="tmp.fp-url"/>
\r
367 <parameter name="target" value="{service-instance-id}"/>
\r
368 <parameter name="replacement" value="`$tmp.service-instance-id`"/>
\r
370 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r
371 <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />
\r
372 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />
\r
373 <parameter name='restapiUser' value='`$prop.controller.user`' />
\r
374 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
\r
375 <parameter name='format' value='json' />
\r
376 <parameter name='httpMethod' value='PUT' />
\r
377 <parameter name="responsePrefix" value="mdsal-fp" />
\r
378 <outcome value='failure'>
\r
380 <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
\r
383 <outcome value='not-found'>
\r
385 <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
\r
389 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
390 resource="forwarding-path"
\r
391 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >
\r
392 <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
\r
393 <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />
\r
394 <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'
\r
395 + $tmp.service-instance-id
\r
396 + '/forwarding-paths/forwarding-path/'
\r
397 + $forwarding-path.forwarding-path-id
\r
398 + '/services-paths/service-path/'
\r
399 + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
\r
400 <outcome value='failure'>
\r
402 <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
\r
405 <outcome value='not-found'>
\r
407 <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
\r
411 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
412 resource="forwarding-path:relationship-list"
\r
413 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"
\r
414 force="true" pfx="tmp.AnAI-data">
\r
415 <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
\r
416 <parameter name="relationship-list.relationship[0].related-link"
\r
417 value="`'/aai/v$/business/customers/customer/'
\r
418 + $output-global-customer-id
\r
419 + '/service-subscriptions/service-subscription/'
\r
420 + $output-service-type
\r
421 + '/service-instances/service-instance/'
\r
422 + $tmp.service-instance-id`" />
\r
423 <outcome value='failure'>
\r
425 <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
\r
428 <outcome value='not-found'>
\r
430 <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
\r
434 <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >
\r
436 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
437 resource="forwarder"
\r
438 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >
\r
439 <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />
\r
440 <outcome value='failure'>
\r
442 <parameter name='error-message' value="Failure writing forwarder to AAI" />
\r
445 <outcome value='not-found'>
\r
447 <parameter name='error-message' value="Failure writing forwarder to AAI" />
\r
451 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
452 resource="forwarder:relationship-list"
\r
453 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id
\r
454 AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"
\r
455 force="true" pfx="tmp.AnAI-data">
\r
456 <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
\r
457 <parameter name="relationship-list.relationship[0].related-link"
\r
458 value="`'/aai/v$/network/generic-vnfs/generic-vnf/'
\r
459 + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />
\r
460 <outcome value='failure'>
\r
462 <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
\r
465 <outcome value='not-found'>
\r
467 <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
\r
477 <outcome value='VNF'>
\r
478 <switch test='`$serv-insts[$serv-index].path-segments_length`'>
\r
482 <outcome value='0'>
\r
485 <outcome value='Other'>
\r
487 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
488 <parameter name="ctx-destination" value="forwarding-path.forwarding-path-id" />
\r
490 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
491 <parameter name="ctx-destination" value="forwarding-path.service-paths.service-path[0].service-path-instance-id" />
\r
494 <parameter name='forwarding-path.forwarding-path-name' value='`$db.path-segment[0].path-name`' />
\r
495 <parameter name='forwarding-path.forwarding-path-type' value='VNF' />
\r
496 <parameter name='forwarding-path.onap-model-information.model-name' value='`$db.path-segment[0].path-name`' />
\r
497 <parameter name='forwarding-path.service-paths.service-path_length' value='1' />
\r
498 <parameter name='forwarding-path.service-paths.service-path[0].service-path-instance-name'
\r
499 value='`$db.path-segment[0].path-name + $forwarding-path.service-paths.service-path[0].service-path-instance-id`' />
\r
500 <parameter name='forwarding-path.service-paths.service-path[0].service_length' value='1' />
\r
501 <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-instance-id'
\r
502 value='`$serv-insts[$serv-index].service-instance-id`' />
\r
503 <parameter name='forwarding-path.service-paths.service-path[0].service[0].service-path-sequence-id' value='1' />
\r
504 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
\r
505 value='`$serv-insts[$serv-index].path-segments_length`' />
\r
508 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-path-sequence-id'
\r
510 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vnf-instance-id'
\r
511 value='`$serv-insts[$serv-index].path-segments[0].left-vnf-instance-id`' />
\r
512 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-name'
\r
513 value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
\r
514 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].right-network-role'
\r
515 value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
\r
516 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[0].vf-module-instance.vf-module-id'
\r
517 value='`$serv-insts[$serv-index].path-segments[0].left-vf-module-id`' />
\r
520 <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[0].network-name`' />
\r
521 <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[0].network-role`' />
\r
523 <for index='ps-index' start='1' end='`$serv-insts[$serv-index].path-segments_length`' >
\r
526 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-path-sequence-id'
\r
527 value='`$ps-index + 1`' />
\r
528 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vnf-instance-id'
\r
529 value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vnf-instance-id`' />
\r
530 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-name'
\r
531 value='`$prev-network-name`' />
\r
532 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].left-network-role'
\r
533 value='`$prev-network-role`' />
\r
534 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-name'
\r
535 value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
\r
536 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].right-network-role'
\r
537 value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
\r
538 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index].vf-module-instance.vf-module-id'
\r
539 value='`$serv-insts[$serv-index].path-segments[$ps-index].left-vf-module-id`' />
\r
542 <parameter name='prev-network-name' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-name`' />
\r
543 <parameter name='prev-network-role' value='`$serv-insts[$serv-index].path-segments[$ps-index].network-role`' />
\r
548 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-path-sequence-id'
\r
549 value='`$ps-index + 2`' />
\r
550 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vnf-instance-id'
\r
551 value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vnf-instance-id`' />
\r
552 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-name'
\r
553 value='`$prev-network-name`' />
\r
554 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].left-network-role'
\r
555 value='`$prev-network-role`' />
\r
556 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$ps-index + 1].vf-module-instance.vf-module-id'
\r
557 value='`$serv-insts[$serv-index].path-segments[$ps-index].right-vf-module-id`' />
\r
560 <parameter name='forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length'
\r
561 value='`$serv-insts[$serv-index].path-segments_length + 1`' />
\r
563 <switch test='`$serv-insts[$serv-index].api`'>
\r
564 <outcome value='GR'>
\r
566 <parameter name='tmp.service-instance-id' value='`$serv-insts[$serv-index].service-instance-id`' />
\r
569 <outcome value='VNF'>
\r
571 <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="generateUUID" >
\r
572 <parameter name="ctx-destination" value="tmp.service-instance-id" />
\r
574 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
\r
575 <parameter name="source" value="`$prop.restapi.service`"/>
\r
576 <parameter name="outputPath" value="tmp.service-url"/>
\r
577 <parameter name="target" value="{service-instance-id}"/>
\r
578 <parameter name="replacement" value="`$tmp.service-instance-id`"/>
\r
580 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r
581 <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.csm.serviceinstance.templatefile`" />
\r
582 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.service-url`' />
\r
583 <parameter name='restapiUser' value='`$prop.controller.user`' />
\r
584 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
\r
585 <parameter name='format' value='json' />
\r
586 <parameter name='httpMethod' value='PUT' />
\r
587 <parameter name="responsePrefix" value="mdsal-sr" />
\r
588 <outcome value='failure'>
\r
590 <parameter name='error-message' value="Failure creating service instance in MD-SAL" />
\r
594 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
595 resource="service-instance"
\r
596 key="customer.global-customer-id = $output-global-customer-id
\r
597 AND service-subscription.service-type = $output-service-type
\r
598 AND service-instance.service-instance-id = $tmp.service-instance-id" >
\r
599 <parameter name="service-instance-id" value="`$tmp.service-instance-id`" />
\r
600 <parameter name="global-customer-id" value="`$output-global-customer-id`" />
\r
601 <parameter name="service-type" value="`$output-service-type`" />
\r
602 <parameter name="service-role" value="`$output-service-role`" />
\r
603 <outcome value='failure'>
\r
605 <parameter name='error-message' value="Failure creating service instance in AAI" />
\r
608 <outcome value='not-found'>
\r
610 <parameter name='error-message' value="Failure creating service instance in AAI" />
\r
614 <save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL"
\r
615 key="INSERT INTO SERVICE_INSTANCE_TO_COMPOSITE_INSTANCE_MAPPING
\r
616 (simple_service_instance_id, forwarding_path_service_instance_id)
\r
617 VALUES ( $serv-insts[$serv-index].service-instance-id , $tmp.service-instance-id )" ></save>
\r
621 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
\r
622 <parameter name="source" value="`$prop.restapi.forwarding-path`"/>
\r
623 <parameter name="outputPath" value="tmp.fp-url"/>
\r
624 <parameter name="target" value="{service-instance-id}"/>
\r
625 <parameter name="replacement" value="`$tmp.service-instance-id`"/>
\r
627 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
\r
628 <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.forwardingpath.templatefile`" />
\r
629 <parameter name='restapiUrl' value='`$prop.controller.url + $tmp.fp-url + $forwarding-path.forwarding-path-id`' />
\r
630 <parameter name='restapiUser' value='`$prop.controller.user`' />
\r
631 <parameter name='restapiPassword' value='`$prop.controller.pwd`' />
\r
632 <parameter name='format' value='json' />
\r
633 <parameter name='httpMethod' value='PUT' />
\r
634 <parameter name="responsePrefix" value="mdsal-fp" />
\r
635 <outcome value='failure'>
\r
637 <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
\r
640 <outcome value='not-found'>
\r
642 <parameter name='error-message' value="Failure writing forwarding-path to MD-SAL" />
\r
646 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
647 resource="forwarding-path"
\r
648 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id" >
\r
649 <parameter name="forwarding-path-id" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
\r
650 <parameter name="forwarding-path-name" value="`$forwarding-path.service-paths.service-path[0].service-path-instance-name`" />
\r
651 <parameter name="selflink" value="`'/restconf/config/GENERIC-RESOURCE-API:services/service/'
\r
652 + $tmp.service-instance-id
\r
653 + '/forwarding-paths/forwarding-path/'
\r
654 + $forwarding-path.forwarding-path-id
\r
655 + '/services-paths/service-path/'
\r
656 + $forwarding-path.service-paths.service-path[0].service-path-instance-id`" />
\r
657 <outcome value='failure'>
\r
659 <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
\r
662 <outcome value='not-found'>
\r
664 <parameter name='error-message' value="Failure writing forwarding-path to AAI" />
\r
668 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
669 resource="forwarding-path:relationship-list"
\r
670 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id"
\r
671 force="true" pfx="tmp.AnAI-data">
\r
672 <parameter name="relationship-list.relationship[0].related-to" value="service-instance" />
\r
673 <parameter name="relationship-list.relationship[0].related-link"
\r
674 value="`'/aai/v$/business/customers/customer/'
\r
675 + $output-global-customer-id
\r
676 + '/service-subscriptions/service-subscription/'
\r
677 + $output-service-type
\r
678 + '/service-instances/service-instance/'
\r
679 + $tmp.service-instance-id`" />
\r
680 <outcome value='failure'>
\r
682 <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
\r
685 <outcome value='not-found'>
\r
687 <parameter name='error-message' value="Failure writing forwarding-path relationship to AAI" />
\r
691 <for index='vnf-index' start='0' end='`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf_length`' >
\r
693 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
694 resource="forwarder"
\r
695 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id" >
\r
696 <parameter name="sequence" value="`$forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id`" />
\r
697 <outcome value='failure'>
\r
699 <parameter name='error-message' value="Failure writing forwarder to AAI" />
\r
702 <outcome value='not-found'>
\r
704 <parameter name='error-message' value="Failure writing forwarder to AAI" />
\r
708 <save plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
\r
709 resource="forwarder:relationship-list"
\r
710 key="forwarding-path.forwarding-path-id = $forwarding-path.service-paths.service-path[0].service-path-instance-id
\r
711 AND forwarder.sequence = $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-path-sequence-id"
\r
712 force="true" pfx="tmp.AnAI-data">
\r
713 <parameter name="relationship-list.relationship[0].related-to" value="generic-vnf" />
\r
714 <parameter name="relationship-list.relationship[0].related-link"
\r
715 value="`'/aai/v$/network/generic-vnfs/generic-vnf/'
\r
716 + $forwarding-path.service-paths.service-path[0].service[0].vnfs.vnf[$vnf-index].vnf-instance-id`" />
\r
717 <outcome value='failure'>
\r
719 <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
\r
722 <outcome value='not-found'>
\r
724 <parameter name='error-message' value="Failure writing forwarder relationship to AAI" />
\r
742 <return status='success'>
\r
743 <parameter name="ack-final-indicator" value="Y" />
\r
744 <parameter name="error-code" value="200" />
\r
745 <parameter name="error-message" value="`$error-message`" />
\r