added generic fabric support to SO
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / aai / tasks / AAIUpdateTasks.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.aai.tasks;
22
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;
49
50 @Component
51 public class AAIUpdateTasks {
52         private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, AAIUpdateTasks.class);
53         @Autowired
54         private AAIServiceInstanceResources aaiServiceInstanceResources;
55         @Autowired
56         private AAIVnfResources aaiVnfResources;
57         @Autowired
58         private AAIVfModuleResources aaiVfModuleResources;
59         @Autowired
60         private ExceptionBuilder exceptionUtil;
61         @Autowired
62         private ExtractPojosForBB extractPojosForBB;
63         @Autowired
64         private AAIVolumeGroupResources aaiVolumeGroupResources;
65         @Autowired
66         private AAINetworkResources aaiNetworkResources;
67         @Autowired
68         private AAICollectionResources aaiCollectionResources;
69         @Autowired
70         private AAIConfigurationResources aaiConfigurationResources;
71         
72         public void updateOrchestrationStatusAssignedService(BuildingBlockExecution execution) {
73                 try {
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);
79                 }
80         }
81         
82         public void updateOrchestrationStatusActiveService(BuildingBlockExecution execution) {
83                 try {
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);
88                 }
89         }
90
91         public void updateOrchestrationStatusAssignedVnf(BuildingBlockExecution execution) {
92                 try {
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);
97                 }
98         }
99         
100         public void updateOrchestrationStatusActiveVnf(BuildingBlockExecution execution) {
101                 try {
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);
106                 }
107         }
108         
109         public void updateOrchestrationStatusAssignedVolumeGroup(BuildingBlockExecution execution) {
110                 try {
111                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
112                         
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);
119                 }
120         }
121         
122         public void updateOrchestrationStatusActiveVolumeGroup(BuildingBlockExecution execution) {
123                 try {
124                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
125                         
126                         VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
127                         CloudRegion cloudRegion = gBBInput.getCloudRegion();
128                         
129                         aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.ACTIVE);
130                 } catch (Exception ex) {
131                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
132                 }
133         }
134         
135         public void updateOrchestrationStatusCreatedVolumeGroup(BuildingBlockExecution execution) {
136                 try {
137                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
138                         
139                         VolumeGroup volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID, execution.getLookupMap().get(ResourceKey.VOLUME_GROUP_ID));
140                         CloudRegion cloudRegion = gBBInput.getCloudRegion();
141                         
142                         aaiVolumeGroupResources.updateOrchestrationStatusVolumeGroup(volumeGroup, cloudRegion, OrchestrationStatus.CREATED);
143                 } catch (Exception ex) {
144                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
145                 }
146         }
147         
148         public void updateHeatStackIdVolumeGroup(BuildingBlockExecution execution) {
149                 try {
150                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
151                         String heatStackId = execution.getVariable("heatStackId");
152                         
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);
156                         
157                         aaiVolumeGroupResources.updateHeatStackIdVolumeGroup(volumeGroup, cloudRegion);
158                 } catch (Exception ex) {
159                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
160                 }
161         }
162         
163         public void updateOrchestrationStatusAssignedVfModule(BuildingBlockExecution execution) {
164                 try {
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);
171                 }
172         }
173         
174         public void updateOrchestrationStatusPendingActivationVfModule(BuildingBlockExecution execution) {
175                 try {
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);
181                 }
182         }
183         
184         public void updateOrchestrationStatusCreatedVfModule(BuildingBlockExecution execution) {                
185                 try {
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);
191                 }
192         }       
193         
194         public void updateOrchestrationStatusDeactivateVfModule(BuildingBlockExecution execution) {     
195                 execution.setVariable("aaiDeactivateVfModuleRollback", false);
196                 try {
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);
203                 }
204         }
205         
206         /**
207          * BPMN access method to update status of L3Network to Assigned in AAI
208          * @param execution
209          * @throws BBObjectNotFoundException 
210          */
211         public void updateOrchestrationStatusAssignedNetwork(BuildingBlockExecution execution) {
212                 execution.setVariable("aaiNetworkAssignRollback", false);
213                 try {
214                         L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
215                         L3Network copiedl3network = l3network.shallowCopyId();
216
217
218                         l3network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
219                         l3network.setHeatStackId("");
220
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);
227                 }
228         }
229         
230         /**
231          * BPMN access method to update status of L3Network to Active in AAI
232          * @param execution
233          * @throws BBObjectNotFoundException 
234          */
235         public void updateOrchestrationStatusActiveNetwork(BuildingBlockExecution execution) {
236                 execution.setVariable("aaiNetworkActivateRollback", false);
237                 try {
238                         L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
239                         L3Network copiedl3network = l3network.shallowCopyId();
240
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);
247                 }
248         }
249         
250         /**
251          * BPMN access method to update status of L3Network to Created in AAI
252          * @param execution
253          * @throws BBObjectNotFoundException 
254          */
255         public void updateOrchestrationStatusCreatedNetwork(BuildingBlockExecution execution) {
256                 execution.setVariable("aaiNetworkActivateRollback", false);
257                 try {
258                         L3Network l3network =  extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID, execution.getLookupMap().get(ResourceKey.NETWORK_ID));
259                         L3Network copiedl3network = l3network.shallowCopyId();
260
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);
267                 }
268         }
269         
270         /**
271          * BPMN access method to update status of L3Network Collection to Active in AAI
272          * @param execution
273          * @throws BBObjectNotFoundException 
274          */
275         public void updateOrchestrationStatusActiveNetworkCollection(BuildingBlockExecution execution) {
276                 execution.setVariable("aaiNetworkCollectionActivateRollback", false);
277                 try {
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();
281
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);
288                 }
289         }
290         
291         public void updateOrchestrationStatusActivateVfModule(BuildingBlockExecution execution) {
292                 execution.setVariable("aaiActivateVfModuleRollback", false);
293                 try {
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);
300                 }
301         }
302         
303         public void updateHeatStackIdVfModule(BuildingBlockExecution execution) {               
304                 try {
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);
312                 }
313         }
314         
315         /**
316          * BPMN access method to update L3Network after it was created in AIC
317          * @param execution
318          * @throws Exception
319          */
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");
325                 try {
326                         if(response.getNetworkFqdn()!=null){
327                         l3network.setContrailNetworkFqdn(response.getNetworkFqdn());
328                         }
329                         l3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
330                         l3network.setHeatStackId(response.getNetworkStackId());
331                         l3network.setNeutronNetworkId(response.getNeutronNetworkId());
332
333                         copiedl3network.setContrailNetworkFqdn(response.getNetworkFqdn());
334                         copiedl3network.setOrchestrationStatus(OrchestrationStatus.CREATED);
335                         copiedl3network.setHeatStackId(response.getNetworkStackId());
336                         copiedl3network.setNeutronNetworkId(response.getNeutronNetworkId());
337
338                         aaiNetworkResources.updateNetwork(copiedl3network);
339                         execution.setVariable("aaiNetworkActivateRollback", true);
340                 } catch (Exception ex) {
341                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
342                 }
343         }
344         
345         public void updateObjectNetwork(BuildingBlockExecution execution) {
346                 try {
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);
351                 }
352         }
353         
354         /**
355          * BPMN access method to update ServiceInstance
356          * @param execution
357          */
358         public void updateServiceInstance(BuildingBlockExecution execution) {
359                 try {
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);
364                 }
365         }
366         
367         public void updateObjectVnf(BuildingBlockExecution execution) {
368                 try {
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);
373                 }
374         }
375         
376         public void updateOrchestrationStatusDeleteVfModule(BuildingBlockExecution execution) { 
377                 execution.setVariable("aaiDeleteVfModuleRollback", false);
378                 try {
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));
382
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);
389                 }
390         }
391
392         public void updateModelVfModule(BuildingBlockExecution execution) {
393                 try {
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);
399                 }
400         }
401         public void updateOrchestrationStatusActivateFabricConfiguration(BuildingBlockExecution execution) {
402                 try {
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);
407                 }
408         }
409         
410         public void updateOrchestrationStatusDeactivateFabricConfiguration(BuildingBlockExecution execution) {
411                 try {
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);
416                 }
417         }
418 }