* @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
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
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
</contrailNetwork>"""\r
networkTechnology = "CONTRAIL" // replace\r
}\r
- \r
+\r
// rebuild subnets\r
String subnets = ""\r
if (utils.nodeExists(queryIdResponse, "subnets")) {\r
}\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
<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
""".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
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
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
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
<skipAAI>true</skipAAI>\r
<backout>${backoutOnFailure}</backout>\r
<failIfExists>${failIfExists}</failIfExists>\r
- ${networkParams} \r
+ ${networkParams}\r
\r
<msoRequest>\r
<requestId>${requestId}</requestId>\r
<messageId>${messageId}</messageId>\r
<notificationUrl></notificationUrl>\r
</updateNetworkRequest>""".trim()\r
- \r
+\r
}\r
return updateNetworkRequest\r
- \r
+\r
}\r
\r
/**\r
<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
\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
<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
</relationship>\r
</relationship-list>\r
</volume-group>"""\r
- \r
+\r
return requestPayload\r
}\r
\r
<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
} 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
// 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
return contrailNetworkCreatedUpdate\r
}\r
\r
- \r
- \r
+\r
+\r
/**\r
* This method returns the value for the name paramName.\r
* Ex: <network-params>\r
\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
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
}\r
return rtn\r
}\r
- \r
+\r
/**\r
* similar to network policymethod\r
* @param xmlInput the XML document\r
} else {\r
rtn.add(relatedLink.substring(relatedLink.indexOf("/generic-vnf/")+13, relatedLink.length()))\r
}\r
-\r
}\r
}\r
}\r
}\r
return rtn\r
}\r
- \r
+\r
/**\r
* similar to network policymethod\r
* @param xmlInput the XML document\r
} else {\r
rtn.add(relatedLink.substring(relatedLink.indexOf("/l3-network/")+12, relatedLink.length()))\r
}\r
-\r
}\r
}\r
}\r
}\r
return rtn\r
}\r
- \r
+\r
def isVfRelationshipExist(xmlInput) {\r
Boolean rtn = false\r
if (xmlInput!=null) {\r
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
}\r
return lcpCloudRegion\r
}\r
- \r
+\r
def getTenantId(xmlInput) {\r
String tenantId = ""\r
if (xmlInput!=null) {\r
}\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
xmlNetwork += "<"+element+">"+"Active"+"</"+element+">"\r
}\r
} \r
-\r
if (element=="heat-stack-id") {\r
if (replaceNetworkId != "") {\r
xmlNetwork += "<"+element+">"+replaceNetworkId+"</"+element+">"\r
}\r
} \r
}\r
-\r
}\r
return xmlNetwork\r
}\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
rebuildingSubnets += buildSubNetworkElements(subnetXml, createNetworkResponse, subnetList, "subnet")\r
- }\r
+ } \r
}\r
if (utils.nodeExists(subnetsData, 'relationship')) {\r
rebuildingSubnets = rebuildRelationship(requeryIdAAIResponse)\r
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
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
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
}\r
return rebuildingSubnets\r
}\r
- \r
+\r
def buildVlans(queryIdResponse) {\r
def rebuildingSubnets = "<vlans>"\r
def subnetsData = new XmlSlurper().parseText(queryIdResponse)\r
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
}\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
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