Adding support for multi-layer and multi-domain topology discovery for CCVPN
[sdnc/oam.git] / platform-logic / datachange / src / main / xml / DataChange_update-open-ended-links.xml
1 <service-logic
2         xmlns='http://www.onap.org/sdnc/svclogic'
3         xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='DataChange' version='${project.version}'>
4     <method rpc='update-open-ended-links' mode='sync'>
5         <block atomic="true">
6             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
7                           resource="logical-links"
8                           pfx='tmp.aai.logical-links' local-only='false' >
9                 <outcome value='success'>
10                     <for index='llidx' start='0' end='`$tmp.aai.logical-links.logical-link_length`' >
11                         <block atomic="true">
12                             <set>
13                                 <parameter name='src-tpId' value='`$tmp.aai.logical-links.logical-link[$llidx].relationship-list.relationship[0].relationship-data[0].relationship-value`' />
14                                 <parameter name='dst-tpId' value='`$tmp.aai.logical-links.logical-link[$llidx].relationship-list.relationship[1].relationship-data[0].relationship-value`' />
15                                 <parameter name='ll-to-be-updated.' value='`$tmp.aai.logical-links.logical-link[$llidx].`' />
16                             </set>
17                             <switch test='$dst-tpId'>
18                                 <outcome value=''>
19                                     <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
20                                                   resource="p-interface"
21                                                   key="p-interface.interface-name = $src-ltpId
22                 AND depth = '0'"
23                                                   pfx='tmp.aai.src-tp' local-only='false' >
24                                         <outcome value='success'>
25                                             <set>
26                                                 <parameter name='src-plug-id' value='`$tmp.aai.src-tp.inter-domain-plug-id`' />
27                                             </set>
28                                         </outcome>
29                                         <outcome value='not-found'>
30                                             <return status='failure'>
31                                                 <parameter name='ack-final' value='Y'/>
32                                                 <parameter name="error-code" value="500" />
33                                                 <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
34                                             </return>
35                                         </outcome>
36                                         <outcome value='Other'>
37                                             <return status='failure'>
38                                                 <parameter name='ack-final' value='Y'/>
39                                                 <parameter name="error-code" value="500" />
40                                                 <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
41                                             </return>
42                                         </outcome>
43                                     </get-resource>
44                                 </outcome>
45                             </switch>
46                             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
47                                           resource="p-interfaces"
48                                           pfx='tmp.aai.p-interfaces' local-only='false' >
49                                 <outcome value='success'>
50                                     <for index='tpidx' start='0' end='`$tmp.aai.p-interfaces.p-interface_length`' >
51                                         <switch test='`$tmp.aai.p-interfaces.p-interface[$tpidx].inter-domain-plug-id`'>
52                                             <outcome value='`$src-plug-id`'>
53                                                 <switch test='`$tmp.aai.p-interfaces.p-interface[$tpidx].interface-name != $src-tp-id `'>
54                                                     <outcome value='true'>
55                                                         <block atomic='true'>
56                                                             <set>
57                                                                 <parameter name='dst-tp-new' value='`$tmp.aai.p-interfaces.p-interface[$tpidx].interface-name`' />
58                                                             </set>
59                                                             <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='logical-link:relationship-list'
60                                                                     key='logical-link.link-name = $ll-to-be-updated.link-name' force="true" pfx="tmp.AnAI-data">
61                                                                 <parameter name="relationship-list.relationship[1].related-to" value="p-interface" />
62                                                                 <parameter name="relationship-list.relationship[1].related-link" value="`'/p-interfaces/p-interface/' + $dst-tp-new`" />
63                                                                 <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="p-interface.interface-name" />
64                                                                 <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$dst-tp-new`" />
65                                                             </update>
66                                                         </block>
67                                                     </outcome>
68                                                 </switch>
69                                             </outcome>
70                                         </switch>
71                                     </for>
72                                 </outcome>
73                                 <outcome value='not-found'>
74                                     <return status='failure'>
75                                         <parameter name='ack-final' value='Y'/>
76                                         <parameter name="error-code" value="500" />
77                                         <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
78                                     </return>
79                                 </outcome>
80                             </get-resource>
81                         </block>
82                     </for>
83                 </outcome>
84                 <outcome value='not-found'>
85                     <return status='failure'>
86                         <parameter name='ack-final' value='Y'/>
87                         <parameter name="error-code" value="500" />
88                         <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
89                     </return>
90                 </outcome>
91                 <outcome value='Other'>
92                     <return status='failure'>
93                         <parameter name='ack-final' value='Y'/>
94                         <parameter name="error-code" value="500" />
95                         <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
96                     </return>
97                 </outcome>
98             </get-resource>
99         </block>
100     </method>
101 </service-logic>