Merge "JUnit tests for BBInputSetup"
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / sdnc / tasks / SDNCAssignTasks.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
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=========================================================
21  */
22
23 package org.onap.so.bpmn.infrastructure.sdnc.tasks;
24
25 import org.onap.sdnc.northbound.client.model.GenericResourceApiNetworkOperationInformation;
26 import org.onap.sdnc.northbound.client.model.GenericResourceApiServiceOperationInformation;
27 import org.onap.sdnc.northbound.client.model.GenericResourceApiVfModuleOperationInformation;
28 import org.onap.sdnc.northbound.client.model.GenericResourceApiVnfOperationInformation;
29 import org.onap.so.bpmn.common.BuildingBlockExecution;
30 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
37 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
38 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
39 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
40 import org.onap.so.bpmn.servicedecomposition.tasks.ExtractPojosForBB;
41 import org.onap.so.client.exception.BBObjectNotFoundException;
42 import org.onap.so.client.exception.ExceptionBuilder;
43 import org.onap.so.client.orchestration.SDNCNetworkResources;
44 import org.onap.so.client.orchestration.SDNCServiceInstanceResources;
45 import org.onap.so.client.orchestration.SDNCVfModuleResources;
46 import org.onap.so.client.orchestration.SDNCVnfResources;
47 import org.onap.so.client.sdnc.beans.SDNCRequest;
48 import org.onap.so.client.sdnc.endpoint.SDNCTopology;
49 import org.slf4j.Logger;
50 import org.slf4j.LoggerFactory;
51 import org.springframework.beans.factory.annotation.Autowired;
52 import org.springframework.stereotype.Component;
53
54 @Component
55 public class SDNCAssignTasks {
56         private static final Logger logger = LoggerFactory.getLogger(SDNCAssignTasks.class);
57         @Autowired
58         private SDNCServiceInstanceResources sdncSIResources;
59         @Autowired
60         private SDNCVnfResources sdncVnfResources;
61         @Autowired
62         private SDNCVfModuleResources sdncVfModuleResources;
63         @Autowired
64         private ExceptionBuilder exceptionUtil;
65         @Autowired
66         private ExtractPojosForBB extractPojosForBB;
67         @Autowired
68         private SDNCNetworkResources sdncNetworkResources;
69
70         public void assignServiceInstance(BuildingBlockExecution execution) {
71                 try {
72                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
73                         RequestContext requestContext = gBBInput.getRequestContext();
74                         ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
75                         Customer customer = gBBInput.getCustomer();
76                         GenericResourceApiServiceOperationInformation req = sdncSIResources.assignServiceInstance(serviceInstance, customer, requestContext);
77                         SDNCRequest sdncRequest = new SDNCRequest();
78                         sdncRequest.setSDNCPayload(req);
79                         sdncRequest.setTopology(SDNCTopology.SERVICE);
80                         execution.setVariable("SDNCRequest", sdncRequest);
81                 } catch (Exception ex) {
82                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
83                 }
84         }
85
86         public void assignVnf(BuildingBlockExecution execution) {
87                 try {           
88                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();                    
89                         RequestContext requestContext = gBBInput.getRequestContext();
90                         ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
91                         GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
92                         Customer customer = gBBInput.getCustomer();
93                         CloudRegion cloudRegion = gBBInput.getCloudRegion();
94                         GenericResourceApiVnfOperationInformation req = sdncVnfResources.assignVnf(vnf, serviceInstance, customer, cloudRegion, requestContext, Boolean.TRUE.equals(vnf.isCallHoming()));
95                         SDNCRequest sdncRequest = new SDNCRequest();
96                         sdncRequest.setSDNCPayload(req);
97                         sdncRequest.setTopology(SDNCTopology.VNF);
98                         execution.setVariable("SDNCRequest", sdncRequest);
99                 } catch (Exception ex) {
100                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
101                 }
102         }
103
104         public void assignVfModule(BuildingBlockExecution execution) {
105                 try {
106                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
107                         RequestContext requestContext = gBBInput.getRequestContext();
108                         ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
109                         GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
110                         VfModule vfModule = extractPojosForBB.extractByKey(execution, ResourceKey.VF_MODULE_ID);
111                         VolumeGroup volumeGroup = null;
112                         try{
113                                 volumeGroup = extractPojosForBB.extractByKey(execution, ResourceKey.VOLUME_GROUP_ID);
114                         } catch (BBObjectNotFoundException e){
115                                 logger.info("No volume group was found.");
116                         }
117                         Customer customer = gBBInput.getCustomer();
118                         CloudRegion cloudRegion = gBBInput.getCloudRegion();
119                         GenericResourceApiVfModuleOperationInformation req = sdncVfModuleResources.assignVfModule(vfModule, volumeGroup, vnf, serviceInstance, customer, cloudRegion, requestContext);
120                         SDNCRequest sdncRequest = new SDNCRequest();
121                         sdncRequest.setSDNCPayload(req);
122                         sdncRequest.setTopology(SDNCTopology.VFMODULE);
123                         execution.setVariable("SDNCRequest", sdncRequest);
124                 } catch (Exception ex) {
125                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
126                 }
127         }
128
129         /**
130          * BPMN access method to perform Assign action on SDNC for L3Network
131          * @param execution
132          * @throws Exception
133          */
134         public void assignNetwork(BuildingBlockExecution execution) {
135                 try {
136                         GeneralBuildingBlock gBBInput = execution.getGeneralBuildingBlock();
137                         L3Network l3network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
138                         ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID);
139                         Customer customer = gBBInput.getCustomer();
140                         RequestContext requestContext = gBBInput.getRequestContext();
141                         CloudRegion cloudRegion = gBBInput.getCloudRegion();
142                         GenericResourceApiNetworkOperationInformation req = sdncNetworkResources.assignNetwork(l3network, serviceInstance, customer, requestContext, cloudRegion);
143                         SDNCRequest sdncRequest = new SDNCRequest();
144                         sdncRequest.setSDNCPayload(req);
145                         sdncRequest.setTopology(SDNCTopology.NETWORK);
146                         execution.setVariable("SDNCRequest", sdncRequest);
147                 } catch (Exception ex) {
148                         exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
149                 }
150         }
151 }