import static org.apache.commons.lang3.StringUtils.*;\r
import groovy.xml.XmlUtil\r
import groovy.json.*\r
+import groovy.util.XmlParser\r
\r
import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition\r
import org.openecomp.mso.bpmn.core.domain.ServiceInstance\r
import org.apache.commons.codec.binary.Base64;\r
import org.springframework.web.util.UriUtils;\r
\r
-import org.w3c.dom.Document\r
-import org.w3c.dom.Element\r
-import org.w3c.dom.Node\r
-import org.w3c.dom.NodeList\r
-import org.xml.sax.InputSource\r
+\r
/**\r
* This groovy class supports the <class>DoUpdateE2EServiceInstance.bpmn</class> process.\r
*\r
JsonUtils jsonUtil = new JsonUtils()\r
\r
public void preProcessRequest (DelegateExecution execution) {\r
- //only for dug\r
- execution.setVariable("isDebugLogEnabled","true")\r
- execution.setVariable("unit_test", "true")\r
- execution.setVariable("skipVFC", "true")\r
- \r
- def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'\r
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
+ \r
+ def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')' \r
utils.log("INFO","Entered " + method, isDebugEnabled)\r
String msg = ""\r
utils.log("INFO"," ***** Enter DoUpdateE2EServiceInstance preProcessRequest *****", isDebugEnabled)\r
- \r
- utils.log("INFO"," unit test : " + execution.getVariable("unit_test"), isDebugEnabled) \r
\r
try {\r
execution.setVariable("prefix", Prefix)\r
if (productFamilyId == null) {\r
execution.setVariable("productFamilyId", "")\r
}\r
- \r
- String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')\r
- if (isBlank(sdncCallbackUrl)) {\r
- msg = "URN_mso_workflow_sdncadapter_callback is null"\r
- utils.log("INFO", msg, isDebugEnabled)\r
- exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)\r
- }\r
- execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)\r
- utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)\r
\r
- //requestDetails.modelInfo.for AAI PUT servieInstanceData \r
- //requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData \r
String serviceInstanceName = execution.getVariable("serviceInstanceName")\r
- //String serviceInstanceId = execution.getVariable("serviceInstanceId")\r
String uuiRequest = execution.getVariable("uuiRequest")\r
utils.log("INFO","uuiRequest: " + uuiRequest, isDebugEnabled)\r
\r
- String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceDefId")\r
+ String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")\r
utils.log("INFO","modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled)\r
+ execution.setVariable("modelInvariantUuid", modelInvariantUuid)\r
+ execution.setVariable("model-invariant-id-target", modelInvariantUuid)\r
\r
- String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.templateId")\r
+ String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")\r
utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled)\r
+ execution.setVariable("modelUuid", modelUuid)\r
+ execution.setVariable("model-version-id-target", modelUuid)\r
\r
String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName")\r
utils.log("INFO","serviceModelName: " + serviceModelName, isDebugEnabled)\r
- execution.setVariable("serviceModelName", serviceModelName)\r
- \r
- //aai serviceType and Role can be setted as fixed value now.\r
- String aaiServiceType = serviceType\r
- String aaiServiceRole = serviceType+"Role"\r
- \r
- execution.setVariable("modelInvariantUuid", modelInvariantUuid)\r
- execution.setVariable("model-invariant-id-target", modelInvariantUuid)\r
- execution.setVariable("modelUuid", modelUuid)\r
- execution.setVariable("model-version-id-target", modelUuid)\r
-\r
- //AAI PUT\r
- String oStatus = execution.getVariable("initialStatus") ?: ""\r
- utils.log("INFO","oStatus: " + oStatus, isDebugEnabled)\r
- if ("TRANSPORT".equalsIgnoreCase(serviceType))\r
- {\r
- oStatus = "Update"\r
+ if(serviceModelName == null) {\r
+ serviceModelName = ""\r
}\r
-\r
- String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${oStatus}</orchestration-status>"\r
- utils.log("INFO","statusLine: " + statusLine, isDebugEnabled) \r
- AaiUtil aaiUriUtil = new AaiUtil(this)\r
- utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled) \r
- String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)\r
- utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled)\r
- String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)\r
- utils.log("INFO","namespace: " + namespace, isDebugEnabled)\r
- /*\r
- String serviceInstanceData =\r
- """<service-instance xmlns=\"${namespace}\">\r
- <service-instance-id>${serviceInstanceId}</service-instance-id>\r
- <service-instance-name>${serviceInstanceName}</service-instance-name>\r
- <service-type>${aaiServiceType}</service-type>\r
- <service-role>${aaiServiceRole}</service-role>\r
- ${statusLine}\r
- <model-invariant-id>${modelInvariantUuid}</model-invariant-id>\r
- <model-version-id>${modelUuid}</model-version-id>\r
- </service-instance>""".trim()\r
- */\r
- //begin only for test\r
- String serviceInstanceData =\r
- """<service-instance xmlns=\"${namespace}\">\r
- <service-instance-id>${serviceInstanceId}</service-instance-id>\r
- <service-instance-name>${serviceInstanceName}</service-instance-name>\r
- <service-type>${aaiServiceType}</service-type>\r
- <service-role>${aaiServiceRole}</service-role>\r
- ${statusLine}\r
- </service-instance>""".trim()\r
- //end only for test\r
- execution.setVariable("serviceInstanceData", serviceInstanceData)\r
- utils.log("INFO","serviceInstanceData: " + serviceInstanceData, isDebugEnabled)\r
- utils.logAudit(serviceInstanceData)\r
- utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled)\r
- utils.log("INFO", " 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)\r
- \r
- execution.setVariable("serviceSDNCCreate", "false")\r
- execution.setVariable("operationStatus", "Waiting deploy resource...") \r
-\r
+ execution.setVariable("serviceModelName", serviceModelName)\r
+ \r
} catch (BpmnError e) {\r
throw e;\r
} catch (Exception ex){\r
utils.log("INFO", msg, isDebugEnabled)\r
exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)\r
}\r
- else\r
- {\r
- utils.log("INFO", "SI Data" + siData, isDebugEnabled)\r
- \r
- InputSource source = new InputSource(new StringReader(siData));\r
- DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();\r
- DocumentBuilder docBuilder = docFactory.newDocumentBuilder()\r
- Document serviceXml = docBuilder.parse(source)\r
- serviceXml.getDocumentElement().normalize()\r
- \r
- // Get Template uuid and version\r
- if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {\r
- utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)\r
- def modelInvariantId = serviceXml.getElementsByTagName("model-invariant-id").item(0).getTextContent()\r
- def modelVersionId = serviceXml.getElementsByTagName("model-version-id").item(0).getTextContent()\r
- \r
- // Set Original Template info\r
- execution.setVariable("model-invariant-id-original", modelInvariantId)\r
- execution.setVariable("model-version-id-original", modelVersionId) \r
- }\r
- \r
- //Confirm there are no related service instances (vnf/network or volume)\r
- if (utils.nodeExists(siData, "relationship-list")) {\r
- utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)\r
- \r
- //test(siData)\r
- NodeList nodeList = serviceXml.getElementsByTagName("relationship")\r
- JSONArray jArray = new JSONArray()\r
- for (int x = 0; x < nodeList.getLength(); x++) {\r
- Node node = nodeList.item(x)\r
- if (node.getNodeType() == Node.ELEMENT_NODE) {\r
- Element eElement = (Element) node\r
- def e = eElement.getElementsByTagName("related-to").item(0).getTextContent() //for ns\r
- if(e.equals("service-instance")){\r
- def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()\r
- utils.log("INFO", "ServiceInstance Related NS :" + relatedObject, isDebugEnabled)\r
- NodeList dataList = node.getChildNodes()\r
- if(null != dataList) {\r
- JSONObject jObj = new JSONObject()\r
- for (int i = 0; i < dataList.getLength(); i++) {\r
- Node dNode = dataList.item(i)\r
- if(dNode.getNodeName() == "relationship-data") {\r
- Element rDataEle = (Element)dNode\r
- def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()\r
- def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()\r
- if(eKey.equals("service-instance.service-instance-id")){\r
- jObj.put("resourceInstanceId", eValue)\r
- }\r
- }\r
- else if(dNode.getNodeName() == "related-to-property"){\r
- Element rDataEle = (Element)dNode\r
- def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent()\r
- def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()\r
- if(eKey.equals("service-instance.service-instance-name")){\r
- jObj.put("resourceType", eValue)\r
- }\r
- }\r
- }\r
- utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)\r
- jArray.put(jObj)\r
- }\r
- //for overlay/underlay\r
- }else if (e.equals("configuration")){\r
- def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()\r
- utils.log("INFO", "ServiceInstance Related Configuration :" + relatedObject, isDebugEnabled)\r
- NodeList dataList = node.getChildNodes()\r
- if(null != dataList) {\r
- JSONObject jObj = new JSONObject()\r
- for (int i = 0; i < dataList.getLength(); i++) {\r
- Node dNode = dataList.item(i)\r
- if(dNode.getNodeName() == "relationship-data") {\r
- Element rDataEle = (Element)dNode\r
- def eKey = rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()\r
- def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()\r
- if(eKey.equals("configuration.configuration-id")){\r
- jObj.put("resourceInstanceId", eValue)\r
- }\r
- }\r
- else if(dNode.getNodeName() == "related-to-property"){\r
- Element rDataEle = (Element)dNode\r
- def eKey = rDataEle.getElementsByTagName("property-key").item(0).getTextContent()\r
- def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()\r
- if(eKey.equals("configuration.configuration-type")){\r
- jObj.put("resourceType", eValue)\r
- }\r
- }\r
- }\r
- utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)\r
- jArray.put(jObj)\r
- } \r
- }\r
- }\r
- }\r
- execution.setVariable("serviceRelationShip", jArray.toString())\r
+\r
+ utils.log("INFO", "SI Data" + siData, isDebugEnabled) \r
+\r
+ // Get Template uuid and version\r
+ if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {\r
+ utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)\r
+\r
+ def modelInvariantId = utils.getNodeText1(siData, "model-invariant-id")\r
+ def modelVersionId = utils.getNodeText1(siData, "model-version-id")\r
+\r
+ // Set Original Template info\r
+ execution.setVariable("model-invariant-id-original", modelInvariantId)\r
+ execution.setVariable("model-version-id-original", modelVersionId)\r
+ }\r
+ \r
+ //get related service instances (vnf/network or volume) for delete\r
+ if (utils.nodeExists(siData, "relationship-list")) {\r
+ utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)\r
+\r
+ JSONArray jArray = new JSONArray()\r
+\r
+ XmlParser xmlParser = new XmlParser()\r
+ Node root = xmlParser.parseText(siData)\r
+ def relation_list = utils.getChildNode(root, 'relationship-list')\r
+ def relationships = utils.getIdenticalChildren(relation_list, 'relationship') \r
+\r
+ for (def relation: relationships) {\r
+ def jObj = getRelationShipData(relation, isDebugEnabled)\r
+ jArray.put(jObj)\r
}\r
+\r
+ execution.setVariable("serviceRelationShip", jArray.toString())\r
}\r
}else{\r
boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")\r
utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)\r
}\r
\r
+ private JSONObject getRelationShipData(node, isDebugEnabled){ \r
+ JSONObject jObj = new JSONObject()\r
+ \r
+ def relation = utils.nodeToString(node)\r
+ def rt = utils.getNodeText1(relation, "related-to")\r
+ \r
+ def rl = utils.getNodeText1(relation, "related-link")\r
+ utils.log("INFO", "ServiceInstance Related NS/Configuration :" + rl, isDebugEnabled)\r
+ \r
+ def rl_datas = utils.getIdenticalChildren(node, "relationship-data") \r
+ for(def rl_data : rl_datas) {\r
+ def eKey = utils.getChildNodeText(rl_data, "relationship-key")\r
+ def eValue = utils.getChildNodeText(rl_data, "relationship-value")\r
+\r
+ if ((rt == "service-instance" && eKey.equals("service-instance.service-instance-id"))\r
+ //for overlay/underlay\r
+ || (rt == "configuration" && eKey.equals("configuration.configuration-id"))){\r
+ jObj.put("resourceInstanceId", eValue)\r
+ }\r
+ }\r
+\r
+ def rl_props = utils.getIdenticalChildren(node, "related-to-property")\r
+ for(def rl_prop : rl_props) {\r
+ def eKey = utils.getChildNodeText(rl_prop, "property-key")\r
+ def eValue = utils.getChildNodeText(rl_prop, "property-value")\r
+ if((rt == "service-instance" && eKey.equals("service-instance.service-instance-name"))\r
+ //for overlay/underlay\r
+ || (rt == "configuration" && eKey.equals("configuration.configuration-type"))){\r
+ jObj.put("resourceType", eValue)\r
+ }\r
+ }\r
+\r
+ utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled) \r
+\r
+ return jObj\r
+ }\r
\r
public void preInitResourcesOperStatus(DelegateExecution execution){\r
def isDebugEnabled = execution.getVariable("isDebugLogEnabled")\r
\r
List<Resource> resourceList = new ArrayList<String>()\r
List<Resource> addResourceList = execution.getVariable("addResourceList")\r
- List<Resource> delResourceList = execution.setVariable("delResourceList")\r
+ List<Resource> delResourceList = execution.getVariable("delResourceList")\r
resourceList.addAll(addResourceList)\r
resourceList.addAll(delResourceList)\r
for(Resource resource : resourceList){\r
\r
public void preProcessForAddResource(DelegateExecution execution) {\r
def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
-\r
+ utils.log("INFO"," ***** preProcessForAddResource ***** ", isDebugEnabled)\r
+ \r
+ execution.setVariable("operationType", "create")\r
+ \r
+ utils.log("INFO"," *** Exit preProcessForAddResource *** ", isDebugEnabled)\r
}\r
\r
public void postProcessForAddResource(DelegateExecution execution) {\r
def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
utils.log("INFO"," ***** postProcessForAddResource ***** ", isDebugEnabled)\r
\r
- ServiceDecomposition serviceDecomposition_Target = execution.getVariable("serviceDecomposition_Target")\r
- execution.setVariable("serviceDecomposition", serviceDecomposition_Target)\r
- \r
+ execution.setVariable("operationType", "update")\r
+\r
utils.log("INFO"," *** Exit postProcessForAddResource *** ", isDebugEnabled)\r
}\r
\r
public void preProcessForDeleteResource(DelegateExecution execution) {\r
def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
+ utils.log("INFO"," ***** preProcessForDeleteResource ***** ", isDebugEnabled)\r
+ \r
+ execution.setVariable("operationType", "delete")\r
+ \r
+ utils.log("INFO"," *** Exit preProcessForDeleteResource *** ", isDebugEnabled)\r
\r
}\r
\r
public void postProcessForDeleteResource(DelegateExecution execution) {\r
def isDebugEnabled=execution.getVariable("isDebugLogEnabled")\r
- \r
+ utils.log("INFO"," ***** postProcessForDeleteResource ***** ", isDebugEnabled)\r
+ \r
+ execution.setVariable("operationType", "update")\r
+\r
+ utils.log("INFO"," *** Exit postProcessForDeleteResource *** ", isDebugEnabled)\r
} \r
\r
public void preProcessAAIGET2(DelegateExecution execution) {\r