2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Modifications Copyright (c) 2019 Samsung
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.so.bpmn.infrastructure.scripts
26 import javax.xml.parsers.DocumentBuilder
27 import javax.xml.parsers.DocumentBuilderFactory
29 import org.apache.commons.lang3.*
30 import org.camunda.bpm.engine.delegate.BpmnError
31 import org.camunda.bpm.engine.delegate.DelegateExecution
32 import org.onap.aai.domain.yang.GenericVnf
33 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
34 import org.onap.so.bpmn.common.scripts.ExceptionUtil
35 import org.onap.so.bpmn.common.scripts.VidUtils
36 import org.onap.so.bpmn.core.json.JsonUtils
37 import org.onap.so.client.graphinventory.entities.uri.Depth;
38 import org.onap.so.client.aai.AAIResourcesClient
39 import org.onap.so.client.aai.AAIObjectType
40 import org.onap.so.client.aai.entities.AAIResultWrapper
41 import org.onap.so.client.aai.entities.uri.AAIResourceUri
42 import org.onap.so.client.aai.entities.uri.AAIUriFactory
43 import org.w3c.dom.Document
44 import org.w3c.dom.Element
45 import org.w3c.dom.Node
46 import org.w3c.dom.NodeList
47 import org.xml.sax.InputSource
49 import org.slf4j.Logger
50 import org.slf4j.LoggerFactory
53 * This class supports the DoDeleteVnf subFlow
54 * with the Deletion of a generic vnf for
58 class DoDeleteVnf extends AbstractServiceTaskProcessor {
59 private static final Logger logger = LoggerFactory.getLogger( DoDeleteVnf.class);
61 String Prefix="DoDVNF_"
62 ExceptionUtil exceptionUtil = new ExceptionUtil()
63 JsonUtils jsonUtil = new JsonUtils()
64 VidUtils vidUtils = new VidUtils(this)
67 * This method gets and validates the incoming
73 public void preProcessRequest(DelegateExecution execution) {
75 execution.setVariable("prefix",Prefix)
76 logger.trace("STARTED DoDeleteVnf PreProcessRequest Process")
78 execution.setVariable("DoDVNF_SuccessIndicator", false)
79 execution.setVariable("DoDVNF_vnfInUse", false)
84 String vnfId = execution.getVariable("vnfId")
85 execution.setVariable("DoDVNF_vnfId", vnfId)
86 logger.debug("Incoming Vnf(Instance) Id is: " + vnfId)
89 logger.debug("Rethrowing MSOWorkflowException")
92 logger.debug(" Error Occured in DoDeleteVnf PreProcessRequest method!" + e)
93 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf PreProcessRequest")
96 logger.trace("COMPLETED DoDeleteVnf PreProcessRequest Process ")
100 public void getVnf(DelegateExecution execution){
102 execution.setVariable("prefix",Prefix)
103 logger.trace("STARTED DoDeleteVnf getVnf Process ")
106 AAIResourcesClient resourceClient = new AAIResourcesClient()
107 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, execution.getVariable('vnfId'))
109 if(resourceClient.exists(uri)){
110 execution.setVariable("GENGV_FoundIndicator", true)
111 AAIResultWrapper wrapper = resourceClient.get(uri.depth(Depth.ONE))
112 if(wrapper.getRelationships().isPresent()){
113 List<AAIResourceUri> relationships = wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.CLOUD_REGION)
114 relationships.addAll(wrapper.getRelationships().get().getRelatedAAIUris(AAIObjectType.L3_NETWORK))
115 if(!relationships.isEmpty()){
116 execution.setVariable("DoDVNF_vnfInUse", true)
118 logger.debug("Relationship NOT related to OpenStack")
122 Optional<GenericVnf> vnf = wrapper.asBean(GenericVnf.class)
123 if (vnf.get() != null) {
124 if (vnf.get().getVfModules() != null) {
125 if((vnf.get().getVfModules().getVfModule() != null) && !vnf.get().getVfModules().getVfModule().isEmpty()){
126 execution.setVariable("DoDVNF_vnfInUse", true)
131 execution.setVariable("GENGV_FoundIndicator", false)
134 } catch (Exception ex) {
135 logger.debug("Error Occured in DoDeleteVnf getVnf Process " + ex.getMessage())
136 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf getVnf Process")
139 logger.trace("COMPLETED DoDeleteVnf getVnf Process ")
143 * Deletes the generic vnf from aai
145 public void deleteVnf(DelegateExecution execution) {
146 logger.trace("STARTED deleteVnf")
148 String vnfId = execution.getVariable("DoDVNF_vnfId")
150 AAIResourcesClient resourceClient = new AAIResourcesClient();
151 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
152 resourceClient.delete(uri)
154 logger.trace("COMPLETED deleteVnf")
155 } catch (Exception ex) {
156 logger.debug("Error Occured in DoDeleteVnf deleteVnf Process " + ex.getMessage())
157 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf deleteVnf Process")