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.Configuration;
28 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
29 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
30 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
33 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
34 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
35 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
36 import org.onap.so.client.exception.BBObjectNotFoundException;
37 import org.onap.so.client.exception.ExceptionBuilder;
38 import org.onap.so.client.orchestration.AAICollectionResources;
39 import org.onap.so.client.orchestration.AAIConfigurationResources;
40 import org.onap.so.client.orchestration.AAINetworkResources;
41 import org.onap.so.client.orchestration.AAIServiceInstanceResources;
42 import org.onap.so.client.orchestration.AAIVfModuleResources;
43 import org.onap.so.client.orchestration.AAIVnfResources;
44 import org.onap.so.client.orchestration.AAIVolumeGroupResources;
45 import org.onap.so.db.catalog.beans.OrchestrationStatus;
46 import org.onap.so.logger.MsoLogger;
47 import org.springframework.beans.factory.annotation.Autowired;
48 import org.springframework.stereotype.Component;
51 public class AAIUpdateTasks {
52 private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, AAIUpdateTasks.class);
54 private AAIServiceInstanceResources aaiServiceInstanceResources;
56 private AAIVnfResources aaiVnfResources;
58 private AAIVfModuleResources aaiVfModuleResources;
60 private ExceptionBuilder exceptionUtil;
62 private ExtractPojosForBB extractPojosForBB;
64 private AAIVolumeGroupResources aaiVolumeGroupResources;
66 private AAINetworkResources aaiNetworkResources;
68 private AAICollectionResources aaiCollectionResources;
70 private AAIConfigurationResources aaiConfigurationResources;
72 public void updateOrchestrationStatusAssignedService(BuildingBlockExecution execution) {
74 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
75 aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ASSIGNED);
76 execution.setVariable("aaiServiceInstanceRollback", true);
77 } catch (Exception ex) {
78 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
82 public void updateOrchestrationStatusActiveService(BuildingBlockExecution execution) {
84 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
85 aaiServiceInstanceResources.updateOrchestrationStatusServiceInstance(serviceInstance, OrchestrationStatus.ACTIVE);
86 } catch (Exception ex) {
87 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
91 public void updateOrchestrationStatusAssignedVnf(BuildingBlockExecution execution) {
93 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
94 aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ASSIGNED);
95 } catch (Exception ex) {
96 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
100 public void updateOrchestrationStatusActiveVnf(BuildingBlockExecution execution) {
102 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
103 aaiVnfResources.updateOrchestrationStatusVnf(vnf,OrchestrationStatus.ACTIVE);
104 } catch (Exception ex) {
105 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
109 public void updateOrchestrationStatusAssignedVolumeGroup(BuildingBlockExecution execution) {
111 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
113 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
114 CloudRegion cloudRegion = gBBInput.getCloudRegion();
115 volumeGroup.setHeatStackId("");
116 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ASSIGNED);
117 } catch (Exception ex) {
118 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
122 public void updateOrchestrationStatusActiveVolumeGroup(BuildingBlockExecution execution) {
124 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
126 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
127 CloudRegion cloudRegion = gBBInput.getCloudRegion();
129 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ACTIVE);
130 } catch (Exception ex) {
131 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
135 public void updateOrchestrationStatusCreatedVolumeGroup(BuildingBlockExecution execution) {
137 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
139 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
140 CloudRegion cloudRegion = gBBInput.getCloudRegion();
142 aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.CREATED);
143 } catch (Exception ex) {
144 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
148 public void updateHeatStackIdVolumeGroup(BuildingBlockExecution execution) {
150 GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
151 String heatStackId = execution.getVariable("heatStackId");
153 VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
154 CloudRegion cloudRegion = gBBInput.getCloudRegion();
155 volumeGroup.setHeatStackId(heatStackId);
157 aaiVolumeGroupResources.updateHeatStackIdVolumeGroup(volumeGroup, cloudRegion);
158 } catch (Exception ex) {
159 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
163 public void updateOrchestrationStatusAssignedVfModule(BuildingBlockExecution execution) {
165 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
166 vfModule.setHeatStackId("");
167 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
168 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.ASSIGNED);
169 } catch (Exception ex) {
170 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
174 public void updateOrchestrationStatusPendingActivationVfModule(BuildingBlockExecution execution) {
176 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
177 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
178 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.PENDING_ACTIVATION);
179 } catch (Exception ex) {
180 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
184 public void updateOrchestrationStatusCreatedVfModule(BuildingBlockExecution execution) {
186 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
187 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
188 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);
189 } catch (Exception ex) {
190 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
194 public void updateOrchestrationStatusDeactivateVfModule(BuildingBlockExecution execution) {
195 execution.setVariable("aaiDeactivateVfModuleRollback", false);
197 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
198 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
199 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.CREATED);
200 execution.setVariable("aaiDeactivateVfModuleRollback", true);
201 } catch (Exception ex) {
202 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
207 * BPMN access method to update status of L3Network to Assigned in AAI
209 * @throws BBObjectNotFoundException
211 public void updateOrchestrationStatusAssignedNetwork(BuildingBlockExecution execution) {
212 execution.setVariable("aaiNetworkAssignRollback", false);
214 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
215 L3Network copiedl3network = l3network.shallowCopyId();
218 l3network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
219 l3network.setHeatStackId("");
221 copiedl3network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
222 copiedl3network.setHeatStackId("");
223 aaiNetworkResources.updateNetwork(copiedl3network);
224 execution.setVariable("aaiNetworkAssignRollback", true);
225 } catch (Exception ex) {
226 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
231 * BPMN access method to update status of L3Network to Active in AAI
233 * @throws BBObjectNotFoundException
235 public void updateOrchestrationStatusActiveNetwork(BuildingBlockExecution execution) {
236 execution.setVariable("aaiNetworkActivateRollback", false);
238 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
239 L3Network copiedl3network = l3network.shallowCopyId();
241 copiedl3network.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
242 l3network.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
243 aaiNetworkResources.updateNetwork(copiedl3network);
244 execution.setVariable("aaiNetworkActivateRollback", true);
245 } catch (Exception ex) {
246 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
251 * BPMN access method to update status of L3Network to Created in AAI
253 * @throws BBObjectNotFoundException
255 public void updateOrchestrationStatusCreatedNetwork(BuildingBlockExecution execution) {
256 execution.setVariable("aaiNetworkActivateRollback", false);
258 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
259 L3Network copiedl3network = l3network.shallowCopyId();
261 copiedl3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
262 l3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
263 aaiNetworkResources.updateNetwork(copiedl3network);
264 execution.setVariable("aaiNetworkActivateRollback", true);
265 } catch (Exception ex) {
266 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
271 * BPMN access method to update status of L3Network Collection to Active in AAI
273 * @throws BBObjectNotFoundException
275 public void updateOrchestrationStatusActiveNetworkCollection(BuildingBlockExecution execution) {
276 execution.setVariable("aaiNetworkCollectionActivateRollback", false);
278 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
279 Collection networkCollection = serviceInstance.getCollection();
280 Collection copiedNetworkCollection = networkCollection.shallowCopyId();
282 networkCollection.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
283 copiedNetworkCollection.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
284 aaiCollectionResources.updateCollection(copiedNetworkCollection);
285 execution.setVariable("aaiNetworkCollectionActivateRollback", true);
286 } catch (Exception ex) {
287 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
291 public void updateOrchestrationStatusActivateVfModule(BuildingBlockExecution execution) {
292 execution.setVariable("aaiActivateVfModuleRollback", false);
294 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
295 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
296 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule, vnf, OrchestrationStatus.ACTIVE);
297 execution.setVariable("aaiActivateVfModuleRollback", true);
298 } catch (Exception ex) {
299 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
303 public void updateHeatStackIdVfModule(BuildingBlockExecution execution) {
305 String heatStackId = execution.getVariable("heatStackId");
306 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
307 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
308 vfModule.setHeatStackId(heatStackId);
309 aaiVfModuleResources.updateHeatStackIdVfModule(vfModule, vnf);
310 } catch (Exception ex) {
311 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
316 * BPMN access method to update L3Network after it was created in AIC
320 public void updateNetworkCreated(BuildingBlockExecution execution) throws Exception {
321 execution.setVariable("aaiNetworkActivateRollback", false);
322 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
323 L3Network copiedl3network = l3network.shallowCopyId();
324 CreateNetworkResponse response = execution.getVariable("createNetworkResponse");
326 if(response.getNetworkFqdn()!=null){
327 l3network.setContrailNetworkFqdn(response.getNetworkFqdn());
329 l3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
330 l3network.setHeatStackId(response.getNetworkStackId());
331 l3network.setNeutronNetworkId(response.getNeutronNetworkId());
333 copiedl3network.setContrailNetworkFqdn(response.getNetworkFqdn());
334 copiedl3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
335 copiedl3network.setHeatStackId(response.getNetworkStackId());
336 copiedl3network.setNeutronNetworkId(response.getNeutronNetworkId());
338 aaiNetworkResources.updateNetwork(copiedl3network);
339 execution.setVariable("aaiNetworkActivateRollback", true);
340 } catch (Exception ex) {
341 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
345 public void updateObjectNetwork(BuildingBlockExecution execution) {
347 L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
348 aaiNetworkResources.updateNetwork(l3network);
349 } catch(Exception ex) {
350 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
355 * BPMN access method to update ServiceInstance
358 public void updateServiceInstance(BuildingBlockExecution execution) {
360 ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID));
361 aaiServiceInstanceResources.updateServiceInstance(serviceInstance);
362 } catch (Exception ex) {
363 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
367 public void updateObjectVnf(BuildingBlockExecution execution) {
369 GenericVnf genericVnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
370 aaiVnfResources.updateObjectVnf(genericVnf);
371 } catch(Exception ex) {
372 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
376 public void updateOrchestrationStatusDeleteVfModule(BuildingBlockExecution execution) {
377 execution.setVariable("aaiDeleteVfModuleRollback", false);
379 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
380 vfModule.setHeatStackId("");
381 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
383 VfModule copiedVfModule = vfModule.shallowCopyId();
384 copiedVfModule.setHeatStackId("");
385 aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule,vnf,OrchestrationStatus.ASSIGNED);
386 execution.setVariable("aaiDeleteVfModuleRollback", true);
387 } catch (Exception ex) {
388 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
392 public void updateModelVfModule(BuildingBlockExecution execution) {
394 VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID, execution.getLookupMap().get(ResourceKey.VF_MODULE_ID));
395 GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID, execution.getLookupMap().get(ResourceKey.GENERIC_VNF_ID));
396 aaiVfModuleResources.changeAssignVfModule(vfModule, vnf);
397 } catch (Exception ex) {
398 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
401 public void updateOrchestrationStatusActivateFabricConfiguration(BuildingBlockExecution execution) {
403 Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
404 aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ACTIVE);
405 } catch (Exception ex) {
406 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
410 public void updateOrchestrationStatusDeactivateFabricConfiguration(BuildingBlockExecution execution) {
412 Configuration configuration = extractPojosForBB.extractByKey(execution, ResourceKey.CONFIGURATION_ID, execution.getLookupMap().get(ResourceKey.CONFIGURATION_ID));
413 aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ASSIGNED);
414 } catch (Exception ex) {
415 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);