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.Service;
17 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
18 import org.onap.so.serviceinstancebeans.RequestParameters;
19 import org.onap.so.serviceinstancebeans.SubscriberInfo;
20 import java.io.IOException;
23 public class ChildServiceRequestBuilder {
25 private final BuildingBlockExecution buildingBlockExecution;
26 private Service parent;
27 private Service child;
28 private ServiceInstancesRequest sir;
30 private ChildServiceRequestBuilder(final BuildingBlockExecution buildingBlockExecution, Service parent,
32 this.buildingBlockExecution = buildingBlockExecution;
36 this.sir = new ServiceInstancesRequest();
37 RequestDetails requestDetails = new RequestDetails();
38 requestDetails.setRequestInfo(new RequestInfo());
39 this.sir.setRequestDetails(requestDetails);
42 public static ChildServiceRequestBuilder getInstance(final BuildingBlockExecution buildingBlockExecution,
43 String childSvcInstanceName) {
45 Service parent = null;
47 String USERPARAMSERVICE = "service";
48 for (Map<String, Object> params : buildingBlockExecution.getGeneralBuildingBlock().getRequestContext()
49 .getRequestParameters().getUserParams()) {
50 if (params.containsKey(USERPARAMSERVICE)) {
51 ObjectMapper obj = new ObjectMapper();
52 String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
53 parent = obj.readValue(input, Service.class);
54 if (parent.getResources().getServices() != null) {
55 for (Service service : parent.getResources().getServices()) {
56 if (service.getInstanceName().equals(childSvcInstanceName)) {
63 } catch (IOException e) {
64 throw new RuntimeException("Failed parsing context user parameters for parent or child service", e);
66 return new ChildServiceRequestBuilder(buildingBlockExecution, parent, child);
69 public ChildServiceRequestBuilder setParentRequestId(String parentRequestId) {
70 sir.getRequestDetails().getRequestInfo().setRequestorId(parentRequestId);
74 public ChildServiceRequestBuilder setCorrelationId(String correlationId) {
75 sir.getRequestDetails().getRequestInfo().setCorrelator(correlationId);
79 public ChildServiceRequestBuilder setChildSvcInstanceId(String childSvcInstanceId) {
80 sir.setServiceInstanceId(childSvcInstanceId);
84 public ServiceInstancesRequest build() {
85 RequestContext context = buildingBlockExecution.getGeneralBuildingBlock().getRequestContext();
86 sir.setRequestDetails(createRequestDetails(context));
90 private RequestDetails createRequestDetails(RequestContext context) {
91 RequestDetails details = sir.getRequestDetails();
93 details.setRequestParameters(createRequestParameters(context, child));
94 details.setRequestInfo(createRequestInfo(context));
95 details.setCloudConfiguration(createCloudConfiguration());
96 details.setModelInfo(child.getModelInfo());
97 details.setSubscriberInfo(createSubscriberInfo());
98 details.setOwningEntity(createOwningEntity());
99 details.setProject(createProject());
100 details.setRelatedInstanceList(createRelatedInstanceList());
105 private RequestParameters createRequestParameters(RequestContext context, Service childService) {
106 RequestParameters requestParameters = new RequestParameters();
107 requestParameters.getUserParams().add(context.getRequestParameters().getUserParams().get(0));
108 requestParameters.getUserParams().add(Map.of("service", childService));
109 requestParameters.setSubscriptionServiceType(context.getRequestParameters().getSubscriptionServiceType());
110 requestParameters.setaLaCarte(context.getRequestParameters().getALaCarte());
111 requestParameters.setPayload(context.getRequestParameters().getPayload());
112 requestParameters.setUsePreload(context.getRequestParameters().getUsePreload());
114 return requestParameters;
117 private RequestInfo createRequestInfo(RequestContext context) {
118 RequestInfo info = sir.getRequestDetails().getRequestInfo();
120 info.setProductFamilyId(context.getProductFamilyId());
121 info.setSource(context.getSource());
122 info.setRequestorId(context.getRequestorId());
123 info.setInstanceName(child.getInstanceName());
124 info.setSuppressRollback(false);
129 private CloudConfiguration createCloudConfiguration() {
130 if (child.getCloudConfiguration() != null) {
131 return child.getCloudConfiguration();
134 CloudConfiguration cloudConfiguration = null;
135 CloudRegion requestCloudConfiguration = buildingBlockExecution.getGeneralBuildingBlock().getCloudRegion();
136 if (requestCloudConfiguration != null) {
137 cloudConfiguration = new CloudConfiguration();
138 cloudConfiguration.setLcpCloudRegionId(requestCloudConfiguration.getLcpCloudRegionId());
139 cloudConfiguration.setTenantId(requestCloudConfiguration.getTenantId());
140 cloudConfiguration.setCloudOwner(requestCloudConfiguration.getCloudOwner());
142 return cloudConfiguration;
145 private SubscriberInfo createSubscriberInfo() {
146 Customer requestCustomer = buildingBlockExecution.getGeneralBuildingBlock().getCustomer();
148 SubscriberInfo subscriberInfo = null;
149 if (requestCustomer != null) {
150 subscriberInfo = new SubscriberInfo();
151 subscriberInfo.setGlobalSubscriberId(requestCustomer.getGlobalCustomerId());
152 subscriberInfo.setSubscriberName(requestCustomer.getSubscriberName());
155 return subscriberInfo;
158 private OwningEntity createOwningEntity() {
159 org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity requestOwningEntity =
160 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getOwningEntity();
161 OwningEntity owningEntity = null;
162 if (requestOwningEntity != null) {
163 owningEntity = new OwningEntity();
164 owningEntity.setOwningEntityId(requestOwningEntity.getOwningEntityId());
165 owningEntity.setOwningEntityName(requestOwningEntity.getOwningEntityName());
171 private Project createProject() {
172 org.onap.so.bpmn.servicedecomposition.bbobjects.Project requestProject =
173 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getProject();
174 Project project = null;
176 if (requestProject != null) {
177 project = new Project();
178 project.setProjectName(requestProject.getProjectName());
183 private RelatedInstanceList[] createRelatedInstanceList() {
184 RelatedInstance relatedInstance = new RelatedInstance();
185 relatedInstance.setModelInfo(parent.getModelInfo());
186 relatedInstance.setInstanceId(
187 buildingBlockExecution.getGeneralBuildingBlock().getServiceInstance().getServiceInstanceId());
188 relatedInstance.setInstanceDirection(InstanceDirection.source);
190 RelatedInstanceList relatedInstanceList = new RelatedInstanceList();
191 relatedInstanceList.setRelatedInstance(relatedInstance);
193 RelatedInstanceList[] relatedInstanceListsArray = new RelatedInstanceList[1];
194 relatedInstanceListsArray[0] = relatedInstanceList;
196 return relatedInstanceListsArray;