1710 Rebase - Second Attempt
[so.git] / bpmn / MSOCommonBPMN / src / main / groovy / org / openecomp / mso / bpmn / common / scripts / NetworkUtils.groovy
index 3ff2863..4c4f174 100644 (file)
@@ -73,7 +73,7 @@ class NetworkUtils {
         * @param requestInput the request in the process\r
         * @param queryIdResponse the response of REST AAI query by Id\r
         * @param routeCollection the collection\r
-        * @param policyFqdns the policy \r
+        * @param policyFqdns the policy\r
         * @param tableCollection the collection\r
         * @param cloudRegionId the cloud-region-region\r
         * @return String request\r
@@ -84,12 +84,12 @@ class NetworkUtils {
                                String serviceInstanceId = ""\r
                                String sharedValue = ""\r
                                String externalValue = ""\r
-                       \r
+\r
                                if (source == "VID") {\r
                                        sharedValue = utils.getNodeText1(queryIdResponse, "is-shared-network") != null ? utils.getNodeText1(queryIdResponse, "is-shared-network") : "false"\r
                                        externalValue = utils.getNodeText1(queryIdResponse, "is-external-network") != null ? utils.getNodeText1(queryIdResponse, "is-external-network") : "false"\r
                                        serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id")\r
-                                       \r
+\r
                                } else { // source = 'PORTAL'\r
                                        sharedValue = getParameterValue(requestInput, "shared")\r
                                        externalValue = getParameterValue(requestInput, "external")\r
@@ -101,24 +101,28 @@ class NetworkUtils {
                                        String netParams = utils.getNodeXml(requestInput, "network-params", false).replace("tag0:","").replace(":tag0","")\r
                                        networkParams = buildParams(netParams)\r
                                }\r
-                                                                       \r
+\r
                                String failIfExists = "false"\r
                                // requestInput\r
                                String cloudRegion = cloudRegionId\r
                                String tenantId = utils.getNodeText1(requestInput, "tenant-id")\r
+\r
                                String networkType = ""\r
+                               String modelCustomizationUuid = ""\r
                                if (utils.nodeExists(requestInput, "networkModelInfo")) {\r
                                        String networkModelInfo = utils.getNodeXml(requestInput, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")\r
                                        networkType = utils.getNodeText1(networkModelInfo, "modelName")\r
+                                       modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid")\r
                                } else {\r
-                                   networkType = utils.getNodeText1(queryIdResponse, "network-type")\r
+                                       networkType = utils.getNodeText1(queryIdResponse, "network-type")\r
+                                       modelCustomizationUuid = utils.getNodeText1(requestInput, "modelCustomizationId")\r
                                }\r
-                               \r
+\r
                                // queryIdResponse\r
                                String networkName = utils.getNodeText1(queryIdResponse, "network-name")\r
                                String networkId = utils.getNodeText1(queryIdResponse, "network-id")\r
                                String networkTechnology = utils.getNodeText1(queryIdResponse, "network-technology")\r
-                               \r
+\r
                                // contrailNetwork - networkTechnology = 'Contrail' vs. 'AIC_SR_IOV')\r
                                String contrailNetwork = ""\r
                                if (networkTechnology.contains('Contrail') || networkTechnology.contains('contrail') || networkTechnology.contains('CONTRAIL')) {\r
@@ -131,7 +135,7 @@ class NetworkUtils {
                                                         </contrailNetwork>"""\r
                                        networkTechnology = "CONTRAIL"    // replace\r
                            }\r
-                                                               \r
+\r
                                // rebuild subnets\r
                                String subnets = ""\r
                                if (utils.nodeExists(queryIdResponse, "subnets")) {\r
@@ -140,10 +144,10 @@ class NetworkUtils {
                                }\r
 \r
                                String physicalNetworkName = ""\r
-                               physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name") \r
-                               \r
+                               physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name")\r
+\r
                                String vlansCollection = buildVlans(queryIdResponse)\r
-                               \r
+\r
                                String notificationUrl = ""                                   //TODO - is this coming from URN? What variable/value to use?\r
                                //String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?\r
 \r
@@ -165,7 +169,7 @@ class NetworkUtils {
                                                                        <skipAAI>true</skipAAI>\r
                                                                        <backout>${backoutOnFailure}</backout>\r
                                                                        <failIfExists>${failIfExists}</failIfExists>\r
-                                                                       ${networkParams}        \r
+                                                                       ${networkParams}\r
                                                                        <msoRequest>\r
                                                                                <requestId>${requestId}</requestId>\r
                                                                                <serviceInstanceId>${serviceInstanceId}</serviceInstanceId>\r
@@ -176,9 +180,9 @@ class NetworkUtils {
                                                                """.trim()\r
                }\r
                return createNetworkRequest\r
-               \r
+\r
        }\r
-       \r
+\r
        /**\r
         * This method returns the string for Network request\r
         * V2 for Contrail 3.x will populate cloud-region data in same cloudSiteId filed\r
@@ -197,18 +201,18 @@ class NetworkUtils {
                                String serviceInstanceId = ""\r
                                String sharedValue = ""\r
                                String externalValue = ""\r
-                       \r
+\r
                                if (source == "VID") {\r
                                        sharedValue = utils.getNodeText1(queryIdResponse, "is-shared-network") != null ? utils.getNodeText1(queryIdResponse, "is-shared-network") : "false"\r
                                        externalValue = utils.getNodeText1(queryIdResponse, "is-external-network") != null ? utils.getNodeText1(queryIdResponse, "is-external-network") : "false"\r
                                        serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id")\r
-                                       \r
+\r
                                } else { // source = 'PORTAL'\r
                                        sharedValue = getParameterValue(requestInput, "shared")\r
                                        externalValue = getParameterValue(requestInput, "external")\r
                                        serviceInstanceId = utils.getNodeText1(requestInput, "service-instance-id") != null ? utils.getNodeText1(requestInput, "service-instance-id") : ""\r
                                }\r
-                                                               \r
+\r
                                String failIfExists = "false"\r
                                // requestInput\r
                                String cloudRegion = cloudRegionId\r
@@ -226,9 +230,9 @@ class NetworkUtils {
                                        modelCustomizationUuid = utils.getNodeText1(networkModelInfo, "modelCustomizationUuid")\r
                                } else {\r
                                        networkType = utils.getNodeText1(queryIdResponse, "network-type")\r
+                                       modelCustomizationUuid = utils.getNodeText1(requestInput, "modelCustomizationId")\r
                                }\r
 \r
-\r
                                // rebuild subnets\r
                                String subnets = ""\r
                                if (utils.nodeExists(queryIdResponse, "subnets")) {\r
@@ -241,16 +245,16 @@ class NetworkUtils {
                                        String netParams = utils.getNodeXml(requestInput, "network-params", false).replace("tag0:","").replace(":tag0","")\r
                                        networkParams = buildParams(netParams)\r
                                }\r
-                                       \r
+\r
                                String networkStackId = utils.getNodeText1(queryIdResponse, "heat-stack-id")\r
                                if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {\r
                                        networkStackId = "force_update"\r
                                }\r
-                               \r
+\r
                                String physicalNetworkName = utils.getNodeText1(queryIdResponse, "physical-network-name")\r
                                String vlansCollection = buildVlans(queryIdResponse)\r
-                               \r
-                               updateNetworkRequest = \r
+\r
+                               updateNetworkRequest =\r
                          """<updateNetworkRequest>\r
                                                                <cloudSiteId>${cloudRegion}</cloudSiteId>\r
                                                                <tenantId>${tenantId}</tenantId>\r
@@ -276,7 +280,7 @@ class NetworkUtils {
                                                                <skipAAI>true</skipAAI>\r
                                                                <backout>${backoutOnFailure}</backout>\r
                                                                <failIfExists>${failIfExists}</failIfExists>\r
-                                                                       ${networkParams}        \r
+                                                                       ${networkParams}\r
 \r
                                                                <msoRequest>\r
                                                                  <requestId>${requestId}</requestId>\r
@@ -285,10 +289,10 @@ class NetworkUtils {
                                                                <messageId>${messageId}</messageId>\r
                                                                <notificationUrl></notificationUrl>\r
                                                        </updateNetworkRequest>""".trim()\r
-                                                  \r
+\r
                }\r
                return updateNetworkRequest\r
-               \r
+\r
        }\r
 \r
        /**\r
@@ -331,7 +335,7 @@ class NetworkUtils {
                                <heat-stack-id></heat-stack-id>\r
                                <vnf-type>${vnfType}</vnf-type>\r
                                <orchestration-status>Pending</orchestration-status>\r
-                               <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>\r
+                               <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>\r
                                <relationship-list>\r
                                   <relationship>\r
                                           <related-to>tenant</related-to>\r
@@ -353,9 +357,9 @@ class NetworkUtils {
 \r
                                return requestPayload\r
                        }\r
-       \r
+\r
        def String createCloudRegionVolumeRequest(groupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId) {\r
-               \r
+\r
                String requestPayload =\r
                """<volume-group xmlns="${namespace}">\r
                        <volume-group-id>${groupId}</volume-group-id>\r
@@ -363,7 +367,7 @@ class NetworkUtils {
                        <heat-stack-id></heat-stack-id>\r
                        <vnf-type>${vnfType}</vnf-type>\r
                        <orchestration-status>Pending</orchestration-status>\r
-                       <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>\r
+                       <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>\r
                        <relationship-list>\r
                                <relationship>\r
                                   <related-to>generic-vnf</related-to>\r
@@ -389,7 +393,7 @@ class NetworkUtils {
                           </relationship>\r
                   </relationship-list>\r
                </volume-group>"""\r
-       \r
+\r
                return requestPayload\r
        }\r
 \r
@@ -420,7 +424,7 @@ class NetworkUtils {
                                        <vnf-type>${vnfType}</vnf-type>\r
                                        <orchestration-status>Active</orchestration-status>\r
                                        <resource-version>${resourceVersion}</resource-version>\r
-                                       <vf-module-persona-model-customization-id>${modelCustomizationId}</vf-module-persona-model-customization-id>\r
+                                       <vf-module-model-customization-id>${modelCustomizationId}</vf-module-model-customization-id>\r
                                        ${relationshipList}\r
                                 </volume-group>"""\r
                }\r
@@ -480,7 +484,7 @@ class NetworkUtils {
                        } else {\r
                           createNetworkContrailResponse = utils.getNodeXml(createNetworkResponse, "updateNetworkContrailResponse", false).replace("tag0:","").replace(":tag0","")\r
                        }\r
-                          \r
+\r
                        // rebuild network\r
                        def networkList = ["network-id", "network-name", "network-type", "network-role", "network-technology", "neutron-network-id", "is-bound-to-vpn", "service-id", "network-role-instance", "resource-version", "resource-model-uuid", "orchestration-status", "heat-stack-id", "mso-catalog-key", "contrail-network-fqdn",\r
                                                             "physical-network-name", "is-provider-network", "is-shared-network", "is-external-network"]\r
@@ -495,10 +499,14 @@ class NetworkUtils {
                        // rebuild 'segmentation-assignments'\r
                        def rebuildSegmentationAssignments = ""\r
                        if (utils.nodeExists(requeryIdAAIResponse, 'segmentation-assignments')) {\r
-                               List elementList = ["segmentation-id"]  \r
-                               rebuildSegmentationAssignments =  buildXMLElements(requeryIdAAIResponse, "", "segmentation-assignments", elementList)\r
+                               List elementList = ["segmentation-id", "resource-version"]\r
+                               if (utils.nodeExists(requeryIdAAIResponse, 'segmentation-assignment')) {  // new tag\r
+                                   rebuildSegmentationAssignments =  buildXMLElements(requeryIdAAIResponse, "segmentation-assignments", "segmentation-assignment", elementList)\r
+                               } else {\r
+                                  rebuildSegmentationAssignments =  buildXMLElements(requeryIdAAIResponse, "", "segmentation-assignments", elementList)\r
+                               }   \r
                        }\r
-                       \r
+\r
                        // rebuild 'ctag-assignments' / rebuildCtagAssignments\r
                        def rebuildCtagAssignmentsList = ""\r
                        if (utils.nodeExists(requeryIdAAIResponse, 'ctag-assignment')) {\r
@@ -538,8 +546,8 @@ class NetworkUtils {
                        return contrailNetworkCreatedUpdate\r
        }\r
 \r
-       \r
-       \r
+\r
+\r
        /**\r
         * This method returns the value for the name paramName.\r
         *   Ex:   <network-params>\r
@@ -594,20 +602,20 @@ class NetworkUtils {
 \r
        /**\r
         * This method returns the networkParams xml string.\r
-        *   Ex: input:  \r
+        *   Ex: input:\r
         *         <network-params>\r
         *            <param name="shared">1</param>\r
         *            <param name="external">0</external>\r
         *         </network-params>\r
-        *         \r
+        *\r
         *   Sample result:\r
         *         <networkParams>\r
      *            <shared>1</shared>\r
      *            <external>0</external>\r
      *         </networkParams>\r
-     *           \r
+     *\r
         */\r
-       \r
+\r
        def buildParams(networkParams) {\r
                def build = ""\r
                        def netParams = new XmlParser().parseText(networkParams)\r
@@ -621,15 +629,15 @@ class NetworkUtils {
                                                build += "<${name}>${value}</${name}>"\r
                                        }\r
                                        build += "</networkParams>"\r
-                               }       \r
-                          \r
+                               }\r
+\r
                        } catch (Exception ex) {\r
                                println ' buildParams error - ' + ex.getMessage()\r
                                build = ""\r
-                       }       \r
+                       }\r
                return build\r
        }\r
-       \r
+\r
        def getVlans(xmlInput) {\r
                def rtn = ""\r
                if (xmlInput!=null) {\r
@@ -751,7 +759,7 @@ class NetworkUtils {
                }\r
                return rtn\r
        }\r
-       \r
+\r
        /**\r
         * similar to network policymethod\r
        * @param xmlInput the XML document\r
@@ -775,7 +783,6 @@ class NetworkUtils {
                                                 } else {\r
                                                     rtn.add(relatedLink.substring(relatedLink.indexOf("/generic-vnf/")+13, relatedLink.length()))\r
                                                 }\r
-\r
                                          }\r
                                   }\r
                                }\r
@@ -783,7 +790,7 @@ class NetworkUtils {
                }\r
                return rtn\r
        }\r
-       \r
+\r
        /**\r
         * similar to network policymethod\r
        * @param xmlInput the XML document\r
@@ -807,7 +814,6 @@ class NetworkUtils {
                                                 } else {\r
                                                     rtn.add(relatedLink.substring(relatedLink.indexOf("/l3-network/")+12, relatedLink.length()))\r
                                                 }\r
-\r
                                          }\r
                                   }\r
                                }\r
@@ -815,7 +821,7 @@ class NetworkUtils {
                }\r
                return rtn\r
        }\r
-       \r
+\r
        def isVfRelationshipExist(xmlInput) {\r
                Boolean rtn = false\r
                if (xmlInput!=null) {\r
@@ -824,7 +830,7 @@ class NetworkUtils {
                        if (relationshipListSize > 0) {\r
                                for (i in 0..relationshipListSize-1) {\r
                                   def relationshipXml = XmlUtil.serialize(relationshipList[i])\r
-                                  if (utils.getNodeText(relationshipXml, 'related-to') == "vf-module") { \r
+                                  if (utils.getNodeText(relationshipXml, 'related-to') == "vf-module") {\r
                                             rtn = true\r
                                   }\r
                                }\r
@@ -856,7 +862,7 @@ class NetworkUtils {
                }\r
                return lcpCloudRegion\r
        }\r
-       \r
+\r
        def getTenantId(xmlInput) {\r
                String tenantId = ""\r
                if (xmlInput!=null) {\r
@@ -879,27 +885,27 @@ class NetworkUtils {
                }\r
                return tenantId\r
        }\r
-       \r
+\r
        def isInstanceValueMatch(linkResource, globalSubscriberId, serviceType) {\r
                Boolean rtn = false\r
                try {\r
                        String globalSubscriberIdLink = linkResource.substring(linkResource.indexOf("/customer/")+10, linkResource.indexOf("/service-subscriptions"))\r
                        String serviceTypeLink = linkResource.substring(linkResource.indexOf("/service-subscription/")+22, linkResource.indexOf("/service-instances"))\r
-                       if (globalSubscriberIdLink == globalSubscriberId) { \r
+                       if (globalSubscriberIdLink == globalSubscriberId) {\r
                                        rtn = true\r
                        } else {\r
                                if (serviceTypeLink == serviceType) {\r
                                        rtn = true\r
                                }\r
                        }\r
-                       \r
+\r
                } catch (Exception ex) {\r
                    println 'Exception - ' + ex.getMessage()\r
                        return false\r
                }\r
         return rtn\r
        }\r
-       \r
+\r
        def getListWithElements(xmlInput, groupName) {\r
                def rtn = ""\r
                if (xmlInput != null) {\r
@@ -953,7 +959,6 @@ class NetworkUtils {
                                                        xmlNetwork += "<"+element+">"+"Active"+"</"+element+">"\r
                                            }\r
                                        }       \r
-\r
                                        if (element=="heat-stack-id") {\r
                                                if (replaceNetworkId != "") {\r
                                                        xmlNetwork += "<"+element+">"+replaceNetworkId+"</"+element+">"\r
@@ -984,7 +989,6 @@ class NetworkUtils {
                                        }\r
                                }       \r
                         }\r
-\r
                }\r
                return xmlNetwork\r
        }\r
@@ -1008,7 +1012,7 @@ class NetworkUtils {
                                   } else {\r
                                      def subnetList = ["subnet-id", "neutron-subnet-id", "gateway-address", "network-start-address", "cidr-mask", "ip-version", "orchestration-status", "dhcp-enabled", "dhcp-start", "dhcp-end", "resource-version", "subnet-name"]\r
                                      rebuildingSubnets += buildSubNetworkElements(subnetXml, createNetworkResponse, subnetList, "subnet")\r
-                                  }\r
+                                  }      \r
                                }\r
                                if (utils.nodeExists(subnetsData, 'relationship')) {\r
                                        rebuildingSubnets = rebuildRelationship(requeryIdAAIResponse)\r
@@ -1040,7 +1044,8 @@ class NetworkUtils {
                                        def subnetList = ["dhcp-start", "dhcp-end", "network-start-address", "cidr-mask", "dhcp-enabled", "gateway-address", "ip-version", "subnet-id", "subnet-name"]\r
                                        rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "subnets")\r
                                        //rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "")\r
-                          }                    }\r
+                          }    \r
+                       }\r
                } catch (Exception ex) {\r
                   //\r
                } finally {\r
@@ -1062,7 +1067,7 @@ class NetworkUtils {
                          def xml= new XmlSlurper().parseText(subnetXml)\r
                          var = xml.'**'.find {it.name() == element}\r
                          if (var != null) {\r
-                                if (element=="orchestration-status") {\r
+                                if (element=="orchestration-status") {\r
                                        if(var.toString() == 'pending-create' || var.toString() == 'PendingCreate') {   \r
                                                xmlBuild += "<"+element+">"+"Created"+"</"+element+">"\r
                                        } else { // pending-update or PendingUpdate'\r
@@ -1136,7 +1141,8 @@ class NetworkUtils {
                                        xmlBuild += "<gatewayIp>"+var.toString()+"</gatewayIp>"\r
                                }\r
                                if (element == "ip-version") {\r
-                                       xmlBuild += "<ipVersion>"+var.toString()+"</ipVersion>"\r
+                                       String ipVersion = getIpvVersion(var.toString())\r
+                                       xmlBuild += "<ipVersion>"+ipVersion+"</ipVersion>"\r
                                }\r
                                if (element == "subnet-id") {\r
                                        xmlBuild += "<subnetId>"+var.toString()+"</subnetId>"\r
@@ -1219,7 +1225,7 @@ class NetworkUtils {
                }\r
                return rebuildingSubnets\r
        }\r
-       \r
+\r
        def buildVlans(queryIdResponse) {\r
                def rebuildingSubnets = "<vlans>"\r
                def subnetsData = new XmlSlurper().parseText(queryIdResponse)\r
@@ -1230,7 +1236,7 @@ class NetworkUtils {
                        for (i in 0..subnetsSize-1) {\r
                           def subnet = subnets[i]\r
                           def subnetXml = XmlUtil.serialize(subnet)\r
-                          \r
+\r
                           String vlan = utils.getNodeText1(subnetXml, "segmentation-id")\r
                           if (i>0){\r
                                   rebuildingSubnets += ","\r
@@ -1465,7 +1471,7 @@ class NetworkUtils {
                        }\r
 \r
        public boolean isRollbackEnabled (Execution execution, String payloadXml) {\r
-               \r
+\r
                def rollbackEnabled = false\r
                def rollbackValueSet = false\r
                if (utils.nodeExists(payloadXml, "backout-on-failure")) {\r
@@ -1480,12 +1486,31 @@ class NetworkUtils {
                                rollbackValueSet = true;\r
                        }\r
                }\r
-               \r
+\r
                if (!rollbackValueSet) {\r
                        if (execution.getVariable("URN_mso_rollback") != null) {\r
                            rollbackEnabled = execution.getVariable("URN_mso_rollback").toBoolean()\r
-                       }   \r
+                       }\r
                }\r
                return rollbackEnabled\r
        }\r
+       \r
+       \r
+       /**\r
+        * This method extracts the version for the the given ip-version.\r
+        *\r
+        * @param String ipvVersion - IP protocols version (ex: ipv4 or ipv6)\r
+        * @return String version - digit version (ex: 4 or 6)\r
+        */\r
+       \r
+       public String getIpvVersion (String ipvVersion) {\r
+               \r
+               String version = ""\r
+               if (ipvVersion.isNumber()) {\r
+                       version = ipvVersion\r
+               } else {\r
+                       version = ipvVersion.substring(ipvVersion.indexOf("ipv")+3)\r
+               }\r
+               return version\r
+       }\r
 }\r