2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.aai.tasks;
23 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
24 import org.onap.so.bpmn.common.BuildingBlockExecution;
25 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
26 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
27 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
28 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
29 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
30 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
32 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
33 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
34 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
35 import org.onap.so.client.exception.BBObjectNotFoundException;
36 import org.onap.so.client.exception.ExceptionBuilder;
37 import org.onap.so.client.orchestration.AAICollectionResources;
38 import org.onap.so.client.orchestration.AAINetworkResources;
39 import org.onap.so.client.orchestration.AAIServiceInstanceResources;
40 import org.onap.so.client.orchestration.AAIVfModuleResources;
41 import org.onap.so.client.orchestration.AAIVnfResources;
42 import org.onap.so.client.orchestration.AAIVolumeGroupResources;
43 import org.onap.so.db.catalog.beans.OrchestrationStatus;
44 import org.onap.so.logger.MsoLogger;
45 import org.springframework.beans.factory.annotation.Autowired;
46 import org.springframework.stereotype.Component;
49 public class AAIUpdateTasks {
50 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, AAIUpdateTasks.class);
52 private AAIServiceInstanceResources aaiServiceInstanceResources;
54 private AAIVnfResources aaiVnfResources;
56 private AAIVfModuleResources aaiVfModuleResources;
58 private ExceptionBuilder exceptionUtil;
60 private ExtractPojosForBB extractPojosForBB;
62 private AAIVolumeGroupResources aaiVolumeGroupResources;
64 private AAINetworkResources aaiNetworkResources;
66 private AAICollectionResources aaiCollectionResources;
68 public void updateOrchestrationStatusAssignedService(BuildingBlockExecution execution) {
70 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
71 aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ASSIGNED);
72 execution.setVariable("aaiServiceInstanceRollback", true);
73 } catch (Exception ex) {
74 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
78 public void updateOrchestrationStatusActiveService(BuildingBlockExecution execution) {
80 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
81 aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ACTIVE);
82 } catch (Exception ex) {
83 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
87 public void updateOrchestrationStatusAssignedVnf(BuildingBlockExecution execution) {
89 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
90 aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ASSIGNED);
91 } catch (Exception ex) {
92 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
96 public void updateOrchestrationStatusActiveVnf(BuildingBlockExecution execution) {
98 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
99 aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ACTIVE);
100 } catch (Exception ex) {
101 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
105 public void updateOrchestrationStatusAssignedVolumeGroup(BuildingBlockExecution execution) {
107 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
109 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
110 CloudRegion cloudRegion = gBBInput.getCloudRegion();
111 volumeGroup.setHeatStackId("");
112 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ASSIGNED);
113 } catch (Exception ex) {
114 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
118 public void updateOrchestrationStatusActiveVolumeGroup(BuildingBlockExecution execution) {
120 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
122 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
123 CloudRegion cloudRegion = gBBInput.getCloudRegion();
125 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ACTIVE);
126 } catch (Exception ex) {
127 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
131 public void updateOrchestrationStatusCreatedVolumeGroup(BuildingBlockExecution execution) {
133 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
135 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
136 CloudRegion cloudRegion = gBBInput.getCloudRegion();
138 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.CREATED);
139 } catch (Exception ex) {
140 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
144 public void updateHeatStackIdVolumeGroup(BuildingBlockExecution execution) {
146 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
147 String heatStackId = execution.getVariable("heatStackId");
149 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
150 CloudRegion cloudRegion = gBBInput.getCloudRegion();
151 volumeGroup.setHeatStackId(heatStackId);
153 aaiVolumeGroupResources.updateHeatStackIdVolumeGroup(volumeGroup, cloudRegion);
154 } catch (Exception ex) {
155 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
159 public void updateOrchestrationStatusAssignedVfModule(BuildingBlockExecution execution) {
161 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
162 vfModule.setHeatStackId("");
163 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
164 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.ASSIGNED);
165 } catch (Exception ex) {
166 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
170 public void updateOrchestrationStatusPendingActivationVfModule(BuildingBlockExecution execution) {
172 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
173 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
174 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.PENDING_ACTIVATION);
175 } catch (Exception ex) {
176 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
180 public void updateOrchestrationStatusCreatedVfModule(BuildingBlockExecution execution) {
182 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
183 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
184 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);
185 } catch (Exception ex) {
186 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
190 public void updateOrchestrationStatusDeactivateVfModule(BuildingBlockExecution execution) {
191 execution.setVariable("aaiDeactivateVfModuleRollback", false);
193 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
194 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
195 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);
196 execution.setVariable("aaiDeactivateVfModuleRollback", true);
197 } catch (Exception ex) {
198 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
203 * BPMN access method to update status of L3Network to Assigned in AAI
205 * @throws BBObjectNotFoundException
207 public void updateOrchestrationStatusAssignedNetwork(BuildingBlockExecution execution) {
208 execution.setVariable("aaiNetworkAssignRollback", false);
210 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
211 L3Network copiedl3network = l3network.shallowCopyId();
214 l3network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
215 l3network.setHeatStackId("");
217 copiedl3network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
218 copiedl3network.setHeatStackId("");
219 aaiNetworkResources.updateNetwork(copiedl3network);
220 execution.setVariable("aaiNetworkAssignRollback", true);
221 } catch (Exception ex) {
222 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
227 * BPMN access method to update status of L3Network to Active in AAI
229 * @throws BBObjectNotFoundException
231 public void updateOrchestrationStatusActiveNetwork(BuildingBlockExecution execution) {
232 execution.setVariable("aaiNetworkActivateRollback", false);
234 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
235 L3Network copiedl3network = l3network.shallowCopyId();
237 copiedl3network.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
238 l3network.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
239 aaiNetworkResources.updateNetwork(copiedl3network);
240 execution.setVariable("aaiNetworkActivateRollback", true);
241 } catch (Exception ex) {
242 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
247 * BPMN access method to update status of L3Network to Created in AAI
249 * @throws BBObjectNotFoundException
251 public void updateOrchestrationStatusCreatedNetwork(BuildingBlockExecution execution) {
252 execution.setVariable("aaiNetworkActivateRollback", false);
254 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
255 L3Network copiedl3network = l3network.shallowCopyId();
257 copiedl3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
258 l3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
259 aaiNetworkResources.updateNetwork(copiedl3network);
260 execution.setVariable("aaiNetworkActivateRollback", true);
261 } catch (Exception ex) {
262 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
267 * BPMN access method to update status of L3Network Collection to Active in AAI
269 * @throws BBObjectNotFoundException
271 public void updateOrchestrationStatusActiveNetworkCollection(BuildingBlockExecution execution) {
272 execution.setVariable("aaiNetworkCollectionActivateRollback", false);
274 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
275 Collection networkCollection = serviceInstance.getCollection();
276 Collection copiedNetworkCollection = networkCollection.shallowCopyId();
278 networkCollection.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
279 copiedNetworkCollection.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
280 aaiCollectionResources.updateCollection(copiedNetworkCollection);
281 execution.setVariable("aaiNetworkCollectionActivateRollback", true);
282 } catch (Exception ex) {
283 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
287 public void updateOrchestrationStatusActivateVfModule(BuildingBlockExecution execution) {
288 execution.setVariable("aaiActivateVfModuleRollback", false);
290 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
291 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
292 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule, vnf, OrchestrationStatus.ACTIVE);
293 execution.setVariable("aaiActivateVfModuleRollback", true);
294 } catch (Exception ex) {
295 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
299 public void updateHeatStackIdVfModule(BuildingBlockExecution execution) {
301 String heatStackId = execution.getVariable("heatStackId");
302 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
303 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
304 vfModule.setHeatStackId(heatStackId);
305 aaiVfModuleResources.updateHeatStackIdVfModule(vfModule, vnf);
306 } catch (Exception ex) {
307 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
312 * BPMN access method to update L3Network after it was created in AIC
316 public void updateNetworkCreated(BuildingBlockExecution execution) throws Exception {
317 execution.setVariable("aaiNetworkActivateRollback", false);
318 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
319 L3Network copiedl3network = l3network.shallowCopyId();
320 CreateNetworkResponse response = execution.getVariable("createNetworkResponse");
322 if(response.getNetworkFqdn()!=null){
323 l3network.setContrailNetworkFqdn(response.getNetworkFqdn());
325 l3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
326 l3network.setHeatStackId(response.getNetworkStackId());
327 l3network.setNeutronNetworkId(response.getNeutronNetworkId());
329 copiedl3network.setContrailNetworkFqdn(response.getNetworkFqdn());
330 copiedl3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
331 copiedl3network.setHeatStackId(response.getNetworkStackId());
332 copiedl3network.setNeutronNetworkId(response.getNeutronNetworkId());
334 aaiNetworkResources.updateNetwork(copiedl3network);
335 execution.setVariable("aaiNetworkActivateRollback", true);
336 } catch (Exception ex) {
337 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
341 public void updateObjectNetwork(BuildingBlockExecution execution) {
343 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
344 aaiNetworkResources.updateNetwork(l3network);
345 } catch(Exception ex) {
346 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
351 * BPMN access method to update ServiceInstance
354 public void updateServiceInstance(BuildingBlockExecution execution) {
356 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
357 aaiServiceInstanceResources.updateServiceInstance(serviceInstance);
358 } catch (Exception ex) {
359 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
363 public void updateObjectVnf(BuildingBlockExecution execution) {
365 GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
366 aaiVnfResources.updateObjectVnf(genericVnf);
367 } catch(Exception ex) {
368 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
372 public void updateOrchestrationStatusDeleteVfModule(BuildingBlockExecution execution) {
373 execution.setVariable("aaiDeleteVfModuleRollback", false);
375 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
376 vfModule.setHeatStackId("");
377 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
379 VfModule copiedVfModule = vfModule.shallowCopyId();
380 copiedVfModule.setHeatStackId("");
381 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.ASSIGNED);
382 execution.setVariable("aaiDeleteVfModuleRollback", true);
383 } catch (Exception ex) {
384 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
388 public void updateModelVfModule(BuildingBlockExecution execution) {
390 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
391 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
392 aaiVfModuleResources.changeAssignVfModule(vfModule, vnf);
393 } catch (Exception ex) {
394 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);