1 package org.onap.so.bpmn.infrastructure.service.composition;
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import org.onap.so.bpmn.common.BuildingBlockExecution;
5 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
6 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
7 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
8 import org.onap.so.serviceinstancebeans.CloudConfiguration;
9 import org.onap.so.serviceinstancebeans.InstanceDirection;
10 import org.onap.so.serviceinstancebeans.OwningEntity;
11 import org.onap.so.serviceinstancebeans.Project;
12 import org.onap.so.serviceinstancebeans.RelatedInstance;
13 import org.onap.so.serviceinstancebeans.RelatedInstanceList;
14 import org.onap.so.serviceinstancebeans.RequestDetails;
15 import org.onap.so.serviceinstancebeans.RequestInfo;
16 import org.onap.so.serviceinstancebeans.RequestParameters;
17 import org.onap.so.serviceinstancebeans.Service;
18 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
19 import org.onap.so.serviceinstancebeans.SubscriberInfo;
20 import java.io.IOException;
23 public class ChildServiceRequestBuilder {
24 private final BuildingBlockExecution buildingBlockExecution;
25 private Service parent;
26 private Service child;
27 private ServiceInstancesRequest sir;
29 private ChildServiceRequestBuilder(final BuildingBlockExecution buildingBlockExecution, Service parent,
31 this.buildingBlockExecution = buildingBlockExecution;
35 this.sir = new ServiceInstancesRequest();
36 RequestDetails requestDetails = new RequestDetails();
37 requestDetails.setRequestInfo(new RequestInfo());
38 this.sir.setRequestDetails(requestDetails);
41 public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution,
42 String childSvcInstanceName) {
44 Service parent = null;
46 String USERPARAMSERVICE = "service";
47 for (Map<String, Object> params : buildingBlockExecution.getGeneralBuildingBlock().getRequestContext()
48 .getRequestParameters().getUserParams()) {
49 if (params.containsKey(USERPARAMSERVICE)) {
50 ObjectMapper obj = new ObjectMapper();
51 String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
52 parent = obj.readValue(input, Service.class);
53 if (parent.getResources().getServices() != null) {
54 for (Service service : parent.getResources().getServices()) {
55 if (service.getInstanceName().equals(childSvcInstanceName)) {
62 } catch (IOException e) {
63 throw new RuntimeException("Failed parsing context user parameters for parent or child service", e);
65 return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child);
68 public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution,
69 Service parentInstance, Service childInstance) {
71 Service parent = null;
72 if (childInstance != null) {
73 parent = parentInstance;
74 child = childInstance;
76 return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child);
79 public ChildServiceRequestBuilder setParentRequestId(String parentRequestId) {
80 sir.getRequestDetails().getRequestInfo().setRequestorId(parentRequestId);
84 public ChildServiceRequestBuilder setCorrelationId(String correlationId) {
85 sir.getRequestDetails().getRequestInfo().setCorrelator(correlationId);
89 public ChildServiceRequestBuilder setChildSvcInstanceId(String childSvcInstanceId) {
90 sir.setServiceInstanceId(childSvcInstanceId);
94 public ServiceInstancesRequest build() {
95 RequestContext context = buildingBlockExecution.getGeneralBuildingBlock().getRequestContext();
97 if (context.getAction().equals("deleteInstance")) {
98 sir.setRequestDetails(createRequestDetailsDeleteChild(context));
100 sir.setRequestDetails(createRequestDetails(context));
105 private RequestDetails createRequestDetailsDeleteChild(RequestContext context) {
106 RequestDetails details = sir.getRequestDetails();
108 details.setRequestParameters(createRequestParameters(context, child));
109 details.setRequestInfo(createRequestInfo(context));
110 details.setCloudConfiguration(createCloudConfiguration());
111 details.setModelInfo(child.getModelInfo());
112 details.setSubscriberInfo(createSubscriberInfo());
113 details.setRelatedInstanceList(createRelatedInstanceList());
118 private RequestDetails createRequestDetails(RequestContext context) {
119 RequestDetails details = sir.getRequestDetails();
121 details.setRequestParameters(createRequestParameters(context, child));
122 details.setRequestInfo(createRequestInfo(context));
123 details.setCloudConfiguration(createCloudConfiguration());
124 details.setModelInfo(child.getModelInfo());
125 details.setSubscriberInfo(createSubscriberInfo());
126 details.setOwningEntity(createOwningEntity());
127 details.setProject(createProject());
128 details.setRelatedInstanceList(createRelatedInstanceList());
133 private RequestParameters createRequestParameters(RequestContext context, Service childService) {
134 RequestParameters requestParameters = new RequestParameters();
136 if (!context.getRequestParameters().getUserParams().isEmpty()) {
137 requestParameters.getUserParams().add(context.getRequestParameters().getUserParams().get(0));
138 if (context.getAction().equals("createInstance")) {
139 requestParameters.getUserParams().add(Map.of("service", childService));
142 requestParameters.setSubscriptionServiceType(context.getRequestParameters().getSubscriptionServiceType());
143 requestParameters.setaLaCarte(context.getRequestParameters().getALaCarte());
144 requestParameters.setPayload(context.getRequestParameters().getPayload());
145 requestParameters.setUsePreload(context.getRequestParameters().getUsePreload());
147 return requestParameters;
150 private RequestInfo createRequestInfo(RequestContext context) {
151 RequestInfo info = sir.getRequestDetails().getRequestInfo();
153 info.setProductFamilyId(context.getProductFamilyId());
154 info.setSource(context.getSource());
155 info.setRequestorId(context.getRequestorId());
156 info.setInstanceName(child.getInstanceName());
157 info.setSuppressRollback(false);
162 private CloudConfiguration createCloudConfiguration() {
163 if (child.getCloudConfiguration() != null) {
164 return child.getCloudConfiguration();
167 CloudConfiguration cloudConfiguration = null;
168 CloudRegion requestCloudConfiguration = buildingBlockExecution.getGeneralBuildingBlock().getCloudRegion();
169 if (requestCloudConfiguration != null) {
170 cloudConfiguration = new CloudConfiguration();
171 cloudConfiguration.setLcpCloudRegionId(requestCloudConfiguration.getLcpCloudRegionId());
172 cloudConfiguration.setTenantId(requestCloudConfiguration.getTenantId());
173 cloudConfiguration.setCloudOwner(requestCloudConfiguration.getCloudOwner());
175 return cloudConfiguration;
178 private SubscriberInfo createSubscriberInfo() {
179 Customer requestCustomer = buildingBlockExecution.getGeneralBuildingBlock().getCustomer();
181 SubscriberInfo subscriberInfo = null;
182 if (requestCustomer != null) {
183 subscriberInfo = new SubscriberInfo();
184 subscriberInfo.setGlobalSubscriberId(requestCustomer.getGlobalCustomerId());
185 subscriberInfo.setSubscriberName(requestCustomer.getSubscriberName());
188 return subscriberInfo;
191 private OwningEntity createOwningEntity() {
192 org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity requestOwningEntity =
193 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getOwningEntity();
194 OwningEntity owningEntity = null;
195 if (requestOwningEntity != null) {
196 owningEntity = new OwningEntity();
197 owningEntity.setOwningEntityId(requestOwningEntity.getOwningEntityId());
198 owningEntity.setOwningEntityName(requestOwningEntity.getOwningEntityName());
204 private Project createProject() {
205 org.onap.so.bpmn.servicedecomposition.bbobjects.Project requestProject =
206 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getProject();
207 Project project = null;
209 if (requestProject != null) {
210 project = new Project();
211 project.setProjectName(requestProject.getProjectName());
216 private RelatedInstanceList[] createRelatedInstanceList() {
217 RelatedInstance relatedInstance = new RelatedInstance();
218 relatedInstance.setModelInfo(parent.getModelInfo());
219 relatedInstance.setInstanceId(
220 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getServiceInstanceId());
221 relatedInstance.setInstanceDirection(InstanceDirection.source);
223 RelatedInstanceList relatedInstanceList = new RelatedInstanceList();
224 relatedInstanceList.setRelatedInstance(relatedInstance);
226 RelatedInstanceList[] relatedInstanceListsArray = new RelatedInstanceList[1];
227 relatedInstanceListsArray[0] = relatedInstanceList;
229 return relatedInstanceListsArray;