AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOCommonBPMN / src / main / groovy / org / openecomp / mso / bpmn / common / scripts / NetworkUtils.groovy
index 3eaed10..f6b3654 100644 (file)
@@ -33,7 +33,7 @@ import javax.xml.transform.dom.DOMSource
 import javax.xml.transform.stream.StreamResult\r
 \r
 import org.camunda.bpm.engine.delegate.BpmnError\r
-import org.camunda.bpm.engine.runtime.Execution\r
+import org.camunda.bpm.engine.delegate.DelegateExecution\r
 import org.w3c.dom.Document\r
 import org.w3c.dom.Element\r
 \r
@@ -43,7 +43,7 @@ import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource\r
 \r
 import org.camunda.bpm.engine.delegate.BpmnError\r
-import org.camunda.bpm.engine.runtime.Execution\r
+import org.camunda.bpm.engine.delegate.DelegateExecution\r
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;\r
 import org.w3c.dom.Document\r
 import org.w3c.dom.Element\r
@@ -1010,7 +1010,7 @@ class NetworkUtils {
                                   if (orchestrationStatus == "PendingDelete" || orchestrationStatus == "pending-delete") {\r
                                           // skip, do not include in processing, remove!!!\r
                                   } 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
+                                     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", "ip-assignment-direction", "host-routes"]\r
                                      rebuildingSubnets += buildSubNetworkElements(subnetXml, createNetworkResponse, subnetList, "subnet")\r
                                   }      \r
                                }\r
@@ -1041,7 +1041,7 @@ class NetworkUtils {
                           if (orchestrationStatus == "pending-delete" || orchestrationStatus == "PendingDelete") {\r
                                   // skip, do not include in processing, remove!!!\r
                           } else {\r
-                                       def subnetList = ["dhcp-start", "dhcp-end", "network-start-address", "cidr-mask", "dhcp-enabled", "gateway-address", "ip-version", "subnet-id", "subnet-name"]\r
+                                       def subnetList = ["dhcp-start", "dhcp-end", "network-start-address", "cidr-mask", "dhcp-enabled", "gateway-address", "ip-version", "subnet-id", "subnet-name", "ip-assignment-direction", "host-routes"]\r
                                        rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "subnets")\r
                                        //rebuildingSubnets += buildSubNetworkElements(subnetXml, subnetList, "")\r
                           }    \r
@@ -1084,7 +1084,14 @@ class NetworkUtils {
                                             if (element=="neutron-subnet-id") {\r
                                // skip\r
                                                 } else {\r
-                                                   xmlBuild += "<"+element+">"+var.toString()+"</"+element+">"\r
+                                                        if (element=="host-routes") {\r
+                                                                if (subnetXml.contains("host-routes")) {\r
+                                                                        List elementRoute = ["host-route-id", "route-prefix", "next-hop", "next-hop-type", "resource-version"]\r
+                                                                        xmlBuild += buildXMLElements(subnetXml, "host-routes", "host-route", elementRoute)\r
+                                                                }\r
+                                                        } else {         \r
+                                                               xmlBuild += "<"+element+">"+var.toString()+"</"+element+">"\r
+                                                        }        \r
                                                 }\r
                                         }\r
                                 }\r
@@ -1150,6 +1157,17 @@ class NetworkUtils {
                                if ((element == "subnet-name") && (var != null)) {\r
                                        xmlBuild += "<subnetName>"+var.toString()+"</subnetName>"\r
                                }\r
+                               if ((element == "ip-assignment-direction") && (var != null)) {\r
+                                       xmlBuild += "<addrFromStart>"+var.toString()+"</addrFromStart>"\r
+                               }\r
+                               if (element == "host-routes") {\r
+                                       def routes = ""\r
+                                       if (subnetXml.contains("host-routes")) {\r
+                                               routes = buildHostRoutes(subnetXml)\r
+                                       }\r
+                                       xmlBuild += routes \r
+                               }       \r
+                               \r
                        }\r
                }\r
                if (parentName != "") {\r
@@ -1158,6 +1176,38 @@ class NetworkUtils {
                return xmlBuild\r
        }\r
 \r
+       // rebuild host-routes\r
+       def buildHostRoutes(subnetXml) {\r
+               List  routeElementList = ["host-route-id", "route-prefix", "next-hop", "next-hop-type", "resource-version"]\r
+               def hostRoutes = buildXMLElements(subnetXml, "host-routes", "host-route", routeElementList)\r
+               def buildHostRoutes = ""\r
+               def var = ""\r
+               if (hostRoutes!=null) {\r
+                       def routesData = new XmlSlurper().parseText(hostRoutes)\r
+                       def routes = routesData.'**'.findAll {it.name() == "host-route"}\r
+                       def routesSize = routes.size()\r
+                       for (i in 0..routesSize-1) {\r
+                          buildHostRoutes += "<hostRoutes>"\r
+                          def route = routes[i]\r
+                          def routeXml = XmlUtil.serialize(route)\r
+                          List  elementList = ["route-prefix", "next-hop"]\r
+                          for (element in elementList) {\r
+                                  def xml= new XmlSlurper().parseText(routeXml)\r
+                                  var = xml.'**'.find {it.name() == element}\r
+                                  if (element == "route-prefix") {\r
+                                          buildHostRoutes += "<prefix>"+var.toString()+"</prefix>"\r
+                                  }\r
+                                  if (element == "next-hop") {\r
+                                          buildHostRoutes += "<nextHop>"+var.toString()+"</nextHop>"\r
+                                  }\r
+                          }\r
+                          buildHostRoutes += "</hostRoutes>"\r
+                       }   \r
+               }               \r
+               return buildHostRoutes          \r
+               \r
+       }\r
+       \r
        // rebuild ctag-assignments\r
        def rebuildCtagAssignments(xmlInput) {\r
                def rebuildingCtagAssignments = ""\r
@@ -1470,7 +1520,7 @@ class NetworkUtils {
                                return value\r
                        }\r
 \r
-       public boolean isRollbackEnabled (Execution execution, String payloadXml) {\r
+       public boolean isRollbackEnabled (DelegateExecution execution, String payloadXml) {\r
 \r
                def rollbackEnabled = false\r
                def rollbackValueSet = false\r
@@ -1499,17 +1549,24 @@ class NetworkUtils {
        /**\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
+        * @param String ipvVersion - IP protocols version (ex: ipv4 or ipv6 or 4 or 6)\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
+               try {\r
+                       if (ipvVersion.isNumber()) {\r
+                               version = ipvVersion\r
+                       } else {\r
+                               version = ipvVersion.substring(ipvVersion.indexOf("ipv")+3)\r
+                               if (!version.isNumber()) {\r
+                                       version = ipvVersion\r
+                               }\r
+                       }\r
+               } catch (Exception ex) {\r
+                       version = ipvVersion  \r
                }\r
                return version\r
        }\r