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
diff --git a/platform-logic/datachange/src/main/xml/DataChange_update-open-ended-links.xml b/platform-logic/datachange/src/main/xml/DataChange_update-open-ended-links.xml
new file mode 100644 (file)
index 0000000..1919ec0
--- /dev/null
@@ -0,0 +1,101 @@
+<service-logic
+        xmlns='http://www.onap.org/sdnc/svclogic'
+        xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='DataChange' version='${project.version}'>
+    <method rpc='update-open-ended-links' mode='sync'>
+        <block atomic="true">
+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+                          resource="logical-links"
+                          pfx='tmp.aai.logical-links' local-only='false' >
+                <outcome value='success'>
+                    <for index='llidx' start='0' end='`$tmp.aai.logical-links.logical-link_length`' >
+                        <block atomic="true">
+                            <set>
+                                <parameter name='src-tpId' value='`$tmp.aai.logical-links.logical-link[$llidx].relationship-list.relationship[0].relationship-data[0].relationship-value`' />
+                                <parameter name='dst-tpId' value='`$tmp.aai.logical-links.logical-link[$llidx].relationship-list.relationship[1].relationship-data[0].relationship-value`' />
+                                <parameter name='ll-to-be-updated.' value='`$tmp.aai.logical-links.logical-link[$llidx].`' />
+                            </set>
+                            <switch test='$dst-tpId'>
+                                <outcome value=''>
+                                    <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+                                                  resource="p-interface"
+                                                  key="p-interface.interface-name = $src-ltpId
+               AND depth = '0'"
+                                                  pfx='tmp.aai.src-tp' local-only='false' >
+                                        <outcome value='success'>
+                                            <set>
+                                                <parameter name='src-plug-id' value='`$tmp.aai.src-tp.inter-domain-plug-id`' />
+                                            </set>
+                                        </outcome>
+                                        <outcome value='not-found'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+                                            </return>
+                                        </outcome>
+                                        <outcome value='Other'>
+                                            <return status='failure'>
+                                                <parameter name='ack-final' value='Y'/>
+                                                <parameter name="error-code" value="500" />
+                                                <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+                                            </return>
+                                        </outcome>
+                                    </get-resource>
+                                </outcome>
+                            </switch>
+                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"
+                                          resource="p-interfaces"
+                                          pfx='tmp.aai.p-interfaces' local-only='false' >
+                                <outcome value='success'>
+                                    <for index='tpidx' start='0' end='`$tmp.aai.p-interfaces.p-interface_length`' >
+                                        <switch test='`$tmp.aai.p-interfaces.p-interface[$tpidx].inter-domain-plug-id`'>
+                                            <outcome value='`$src-plug-id`'>
+                                                <switch test='`$tmp.aai.p-interfaces.p-interface[$tpidx].interface-name != $src-tp-id `'>
+                                                    <outcome value='true'>
+                                                        <block atomic='true'>
+                                                            <set>
+                                                                <parameter name='dst-tp-new' value='`$tmp.aai.p-interfaces.p-interface[$tpidx].interface-name`' />
+                                                            </set>
+                                                            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='logical-link:relationship-list'
+                                                                    key='logical-link.link-name = $ll-to-be-updated.link-name' force="true" pfx="tmp.AnAI-data">
+                                                                <parameter name="relationship-list.relationship[1].related-to" value="p-interface" />
+                                                                <parameter name="relationship-list.relationship[1].related-link" value="`'/p-interfaces/p-interface/' + $dst-tp-new`" />
+                                                                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="p-interface.interface-name" />
+                                                                <parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$dst-tp-new`" />
+                                                            </update>
+                                                        </block>
+                                                    </outcome>
+                                                </switch>
+                                            </outcome>
+                                        </switch>
+                                    </for>
+                                </outcome>
+                                <outcome value='not-found'>
+                                    <return status='failure'>
+                                        <parameter name='ack-final' value='Y'/>
+                                        <parameter name="error-code" value="500" />
+                                        <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+                                    </return>
+                                </outcome>
+                            </get-resource>
+                        </block>
+                    </for>
+                </outcome>
+                <outcome value='not-found'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'An error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+                    </return>
+                </outcome>
+                <outcome value='Other'>
+                    <return status='failure'>
+                        <parameter name='ack-final' value='Y'/>
+                        <parameter name="error-code" value="500" />
+                        <parameter name="error-message" value="`'Unexpected error occurred while querying pnf from AnAI with pnf-name = ' + $prop.l3vpn.pe1_id`" />
+                    </return>
+                </outcome>
+            </get-resource>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file