aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/controller
diff options
context:
space:
mode:
authorEinat Vinouze <einat.vinouze@intl.att.com>2019-07-16 17:17:36 +0300
committerIttay Stern <ittay.stern@att.com>2019-07-30 06:01:44 +0300
commite601bbdc43bae9a08e2e10c5139a6f76b47860d7 (patch)
tree1913f0b369ead3f2ea5557e5649d8281eca9871c /vid-app-common/src/main/java/org/onap/vid/controller
parent76c6ee4a697617ec4cdee2f3b48bc83136c858c5 (diff)
Implant vid-app-common org.onap.vid.job (main and test)
Issue-ID: VID-378 Change-Id: I41b0bdc2c4e3635f3f3319b1cd63cefc61912dfc Signed-off-by: Einat Vinouze <einat.vinouze@intl.att.com> Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/controller')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/AaiController.java15
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/AaiServiceInstanceStandardQueryController.java120
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java69
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java4
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java35
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java20
6 files changed, 174 insertions, 89 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/AaiController.java b/vid-app-common/src/main/java/org/onap/vid/controller/AaiController.java
index 4a4f3d300..eee2acc51 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/AaiController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/AaiController.java
@@ -50,6 +50,7 @@ import org.onap.vid.aai.model.AaiGetPnfs.Pnf;
import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse;
import org.onap.vid.aai.util.AAIRestInterface;
import org.onap.vid.model.VersionByInvariantIdsRequest;
+import org.onap.vid.properties.Features;
import org.onap.vid.roles.Role;
import org.onap.vid.roles.RoleProvider;
import org.onap.vid.roles.RoleValidator;
@@ -68,6 +69,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.web.servlet.ModelAndView;
+import org.togglz.core.manager.FeatureManager;
@RestController
@@ -80,17 +82,22 @@ public class AaiController extends RestrictedBaseController {
private AAIRestInterface aaiRestInterface;
private RoleProvider roleProvider;
private SystemPropertiesWrapper systemPropertiesWrapper;
+ private FeatureManager featureManager;
+
@Autowired
public AaiController(AaiService aaiService,
AAIRestInterface aaiRestInterface,
RoleProvider roleProvider,
- SystemPropertiesWrapper systemPropertiesWrapper) {
+ SystemPropertiesWrapper systemPropertiesWrapper,
+ FeatureManager featureManager
+ ) {
this.aaiService = aaiService;
this.aaiRestInterface = aaiRestInterface;
this.roleProvider = roleProvider;
this.systemPropertiesWrapper = systemPropertiesWrapper;
+ this.featureManager = featureManager;
}
@RequestMapping(value = {"/subscriberSearch"}, method = RequestMethod.GET)
@@ -261,13 +268,13 @@ public class AaiController extends RestrictedBaseController {
}
@RequestMapping(value = "/aai_sub_details/{subscriberId}", method = RequestMethod.GET)
- public ResponseEntity<String> GetSubscriberDetails(HttpServletRequest request,
- @PathVariable("subscriberId") String subscriberId) throws IOException {
+ public ResponseEntity<String> getSubscriberDetails(HttpServletRequest request, @PathVariable("subscriberId") String subscriberId,
+ @RequestParam(value="omitServiceInstances", required = false, defaultValue = "false") boolean omitServiceInstances) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
ResponseEntity responseEntity;
List<Role> roles = roleProvider.getUserRoles(request);
RoleValidator roleValidator = RoleValidator.by(roles);
- AaiResponse subscriberData = aaiService.getSubscriberData(subscriberId, roleValidator);
+ AaiResponse subscriberData = aaiService.getSubscriberData(subscriberId, roleValidator, featureManager.isActive(Features.FLAG_1906_AAI_SUB_DETAILS_REDUCE_DEPTH) && omitServiceInstances);
String httpMessage = subscriberData.getT() != null ?
objectMapper.writeValueAsString(subscriberData.getT()) :
subscriberData.getErrorMessage();
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/AaiServiceInstanceStandardQueryController.java b/vid-app-common/src/main/java/org/onap/vid/controller/AaiServiceInstanceStandardQueryController.java
index 8f56f7795..015f8dc96 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/AaiServiceInstanceStandardQueryController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/AaiServiceInstanceStandardQueryController.java
@@ -21,48 +21,54 @@
package org.onap.vid.controller;
-import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Network;
-import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.ServiceInstance;
-import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Vlan;
-import org.onap.vid.aai.model.AaiGetNetworkCollectionDetails.Vnf;
-import org.onap.vid.aai.util.ServiceInstanceStandardQuery;
+import static java.util.stream.Collectors.toList;
+
+import com.google.common.collect.ImmutableMap;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Objects;
+import java.util.UUID;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.text.StrSubstitutor;
import org.onap.vid.asdc.AsdcCatalogException;
import org.onap.vid.exceptions.GenericUncheckedException;
import org.onap.vid.model.ServiceModel;
import org.onap.vid.model.VidNotions;
+import org.onap.vid.model.aaiTree.AAITreeNode;
+import org.onap.vid.model.aaiTree.NodeType;
import org.onap.vid.properties.Features;
+import org.onap.vid.services.AAIServiceTree;
import org.onap.vid.services.VidService;
-import org.onap.vid.utils.Multival;
+import org.onap.vid.utils.Tree;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.togglz.core.manager.FeatureManager;
-import javax.servlet.http.HttpServletRequest;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.UUID;
-
-import static java.util.stream.Collectors.toList;
-
@RestController
@RequestMapping(AaiServiceInstanceStandardQueryController.AAI_STANDARD_QUERY)
public class AaiServiceInstanceStandardQueryController extends VidRestrictedBaseController {
- public static final String AAI_STANDARD_QUERY = "aai/standardQuery";
+ static final String AAI_STANDARD_QUERY = "aai/standardQuery";
+ private static final String SERVICE_INSTANCE_URI_TEMPLATE = "" +
+ "business/customers/customer/${global-customer-id}" +
+ "/service-subscriptions/service-subscription/${service-type}" +
+ "/service-instances/service-instance/${service-instance-id}";
- private final ServiceInstanceStandardQuery serviceInstanceStandardQuery;
private final FeatureManager featureManager;
private final VidService sdcService;
+ private final AAIServiceTree aaiServiceTree;
@Autowired
- public AaiServiceInstanceStandardQueryController(FeatureManager featureManager, ServiceInstanceStandardQuery serviceInstanceStandardQuery, VidService sdcService) {
+ public AaiServiceInstanceStandardQueryController(FeatureManager featureManager,
+ VidService sdcService, AAIServiceTree aaiServiceTree) {
this.featureManager = featureManager;
- this.serviceInstanceStandardQuery = serviceInstanceStandardQuery;
this.sdcService = sdcService;
+ this.aaiServiceTree = aaiServiceTree;
}
@RequestMapping(value = "vlansByNetworks", method = RequestMethod.GET)
@@ -80,54 +86,50 @@ public class AaiServiceInstanceStandardQueryController extends VidRestrictedBase
return new VlansByNetworksHierarchy();
}
- final ServiceInstance serviceInstance =
- serviceInstanceStandardQuery.fetchServiceInstance(globalCustomerId, serviceType, serviceInstanceId);
+ Tree<AAIServiceTree.AaiRelationship> pathsToSearch = new Tree<>(new AAIServiceTree.AaiRelationship(NodeType.SERVICE_INSTANCE));
+ pathsToSearch.addPath(AAIServiceTree.toAaiRelationshipList(NodeType.GENERIC_VNF, NodeType.NETWORK, NodeType.VLAN_TAG));
+ pathsToSearch.addPath(AAIServiceTree.toAaiRelationshipList(NodeType.NETWORK, NodeType.VLAN_TAG));
- Multival<ServiceInstance, Multival<Vnf, Multival<Network, Vlan>>> l3NetworksWithVlansForVnfForService = fetchVnfsForService(serviceInstance);
- Multival<ServiceInstance, Multival<Network, Vlan>> l3NetworksWithVlansForService = fetchNetworksForService(serviceInstance);
+ AAITreeNode aaiTree = aaiServiceTree.buildAAITree(getServiceInstanceUri(globalCustomerId, serviceType, serviceInstanceId),
+ null, HttpMethod.GET, pathsToSearch, false).get(0);
// translate to response's format
return new VlansByNetworksHierarchy(
- l3NetworksWithVlansForService.getValues().stream().map(this::translateNetworksFormat
- ).collect(toList()),
-
- l3NetworksWithVlansForVnfForService.getValues().stream().map(vnfWithNetworks ->
- new VnfVlansByNetworks(vnfWithNetworks.getKey().getVnfId(),
- vnfWithNetworks.getValues().stream().map(this::translateNetworksFormat
- ).collect(toList())
- )
- ).collect(toList())
+ aaiTree.getChildren().stream()
+ .filter(child -> child.getType() == NodeType.NETWORK)
+ .map(this::translateNetworksFormat)
+ .collect(toList()),
+
+ aaiTree.getChildren().stream()
+ .filter(child -> child.getType() == NodeType.GENERIC_VNF)
+ .map(vnf -> new VnfVlansByNetworks(vnf.getId(),
+ vnf.getChildren().stream()
+ .map(this::translateNetworksFormat)
+ .collect(toList())
+ ))
+ .collect(toList())
);
}
- private Multival<ServiceInstance, Multival<Vnf, Multival<Network, Vlan>>> fetchVnfsForService(ServiceInstance serviceInstance) {
- final Multival<ServiceInstance, Vnf> vnfsForService =
- serviceInstanceStandardQuery.fetchRelatedVnfs(serviceInstance);
-
- final Multival<ServiceInstance, Multival<Vnf, Network>> vnfsWithL3NetworksForService =
- vnfsForService.mapEachVal(vnf -> serviceInstanceStandardQuery.fetchRelatedL3Networks("vnf", vnf));
-
- return vnfsWithL3NetworksForService.mapEachVal(vnfMulti->
- vnfMulti.mapEachVal(serviceInstanceStandardQuery::fetchRelatedVlanTags)
- );
+ private String getServiceInstanceUri(String globalCustomerId, String serviceType, String serviceInstanceId) {
+ return new StrSubstitutor(ImmutableMap.of(
+ "global-customer-id", globalCustomerId,
+ "service-type", serviceType,
+ "service-instance-id", serviceInstanceId
+ )).replace(SERVICE_INSTANCE_URI_TEMPLATE);
}
- private Multival<ServiceInstance, Multival<Network, Vlan>> fetchNetworksForService(ServiceInstance serviceInstance) {
- final Multival<ServiceInstance, Network> l3NetworksForService =
- serviceInstanceStandardQuery.fetchRelatedL3Networks("service", serviceInstance);
-
- return l3NetworksForService.mapEachVal(serviceInstanceStandardQuery::fetchRelatedVlanTags);
- }
-
- private NetworksToVlans translateNetworksFormat(Multival<Network, Vlan> networkWithVlan) {
+ private NetworksToVlans translateNetworksFormat(AAITreeNode networkWithVlan) {
return new NetworksToVlans(
- networkWithVlan.getKey().getNetworkId(),
- networkWithVlan.getKey().getNetworkName(),
- networkWithVlan.getKey().getNetworkType(),
- networkWithVlan.getKey().getOrchestrationStatus(),
- networkWithVlan.getValues().stream().map(
- vlan -> new NetworksToVlans.Vlan(vlan.getVlanIdInner())
+ networkWithVlan.getId(),
+ networkWithVlan.getName(),
+ Objects.toString(networkWithVlan.getAdditionalProperties().get("network-type"), null),
+ networkWithVlan.getOrchestrationStatus(),
+ networkWithVlan.getChildren().stream().map(
+ vlan -> new NetworksToVlans.Vlan(
+ Objects.toString(vlan.getAdditionalProperties().get("vlan-id-outer"), null)
+ )
).collect(toList())
);
}
@@ -138,8 +140,8 @@ public class AaiServiceInstanceStandardQueryController extends VidRestrictedBase
throw new GenericUncheckedException("Internal error while fetching Service Model: " + sdcModelUuid);
}
VidNotions.ModelCategory serviceModelCategory = serviceModel.getService().getVidNotions().getModelCategory();
- return serviceModelCategory.equals(VidNotions.ModelCategory.IS_5G_PROVIDER_NETWORK_MODEL) ||
- serviceModelCategory.equals(VidNotions.ModelCategory.IS_5G_FABRIC_CONFIGURATION_MODEL);
+ return (serviceModelCategory == VidNotions.ModelCategory.IS_5G_PROVIDER_NETWORK_MODEL) ||
+ (serviceModelCategory == VidNotions.ModelCategory.IS_5G_FABRIC_CONFIGURATION_MODEL);
}
protected static class VlansByNetworksHierarchy {
@@ -182,10 +184,10 @@ public class AaiServiceInstanceStandardQueryController extends VidRestrictedBase
}
private static class Vlan {
- public final String vlanIdInner;
+ public final String vlanIdOuter;
- private Vlan(String vlanIdInner) {
- this.vlanIdInner = vlanIdInner;
+ private Vlan(String vlanIdOuter) {
+ this.vlanIdOuter = vlanIdOuter;
}
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java b/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
index 081e3c640..01b005c4b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/AsyncInstantiationController.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,25 +20,28 @@
package org.onap.vid.controller;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+import org.onap.vid.exceptions.AccessDeniedException;
import org.onap.vid.exceptions.OperationNotAllowedException;
import org.onap.vid.model.ExceptionResponse;
import org.onap.vid.model.JobAuditStatus;
import org.onap.vid.model.ServiceInfo;
import org.onap.vid.model.serviceInstantiation.ServiceInstantiation;
import org.onap.vid.mso.MsoResponseWrapper2;
+import org.onap.vid.properties.Features;
+import org.onap.vid.roles.RoleProvider;
import org.onap.vid.services.AsyncInstantiationBusinessLogic;
import org.onap.vid.services.AuditService;
import org.onap.vid.utils.SystemPropertiesWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.togglz.core.manager.FeatureManager;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.UUID;
+import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
import static org.springframework.http.HttpStatus.METHOD_NOT_ALLOWED;
@@ -51,14 +54,18 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
protected final AsyncInstantiationBusinessLogic asyncInstantiationBL;
private final SystemPropertiesWrapper systemPropertiesWrapper;
- protected ObjectMapper objectMapper = new ObjectMapper();
+ private final RoleProvider roleProvider;
+
+ private final FeatureManager featureManager;
@Autowired
protected AuditService auditService;
@Autowired
- public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL, SystemPropertiesWrapper systemPropertiesWrapper) {
+ public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL, RoleProvider roleProvider, FeatureManager featureManager, SystemPropertiesWrapper systemPropertiesWrapper) {
this.asyncInstantiationBL = asyncInstantiationBL;
+ this.roleProvider = roleProvider;
+ this.featureManager = featureManager;
this.systemPropertiesWrapper = systemPropertiesWrapper;
}
@@ -82,14 +89,25 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
public MsoResponseWrapper2<List<String>> createBulkOfServices(@RequestBody ServiceInstantiation request, HttpServletRequest httpServletRequest) {
//Push to DB according the model
try {
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "incoming ServiceInstantiation request: "+ objectMapper.writeValueAsString(request));
+ LOGGER.debug(EELFLoggerDelegate.debugLogger, "incoming ServiceInstantiation request: "+ JACKSON_OBJECT_MAPPER.writeValueAsString(request));
}
catch (Exception e) {
LOGGER.error(EELFLoggerDelegate.errorLogger, "failed to log incoming ServiceInstantiation request ", e);
}
String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
- List<UUID> uuids = asyncInstantiationBL.pushBulkJob(request, userId);
+ throwExceptionIfAccessDenied(request, httpServletRequest, userId);
+ List<UUID> uuids = asyncInstantiationBL.pushBulkJob(request, userId);
+ return new MsoResponseWrapper2(200, uuids);
+ }
+
+
+
+ @RequestMapping(value = "retryJobWithChangedData/{jobId}", method = RequestMethod.POST)
+ public MsoResponseWrapper2<List<String>> retryJobWithChangedData(@RequestBody ServiceInstantiation request, @PathVariable(value="jobId") UUID jobId, HttpServletRequest httpServletRequest) {
+
+ String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
+ List<UUID> uuids = asyncInstantiationBL.retryJob(request, jobId, userId);
return new MsoResponseWrapper2(200, uuids);
}
@@ -105,7 +123,7 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
@RequestMapping(value = "auditStatus/{jobId}", method = RequestMethod.GET)
public List<JobAuditStatus> getJobAuditStatus(HttpServletRequest request, @PathVariable(value="jobId") UUID jobId, @RequestParam(value="source") JobAuditStatus.SourceStatus source){
- return asyncInstantiationBL.getAuditStatuses(jobId, source);
+ return auditService.getAuditStatuses(jobId, source);
}
@RequestMapping(value = "auditStatus/{jobId}/mso", method = RequestMethod.GET)
@@ -114,7 +132,7 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
@RequestParam(value="requestId", required = false) UUID requestId,
@RequestParam(value="serviceInstanceId", required = false) UUID serviceInstanceId){
if (serviceInstanceId != null) {
- return auditService.getAuditStatusFromMsoByServiceInstanceId(jobId, serviceInstanceId);
+ return auditService.getAuditStatusFromMsoByInstanceId(JobAuditStatus.ResourceTypeFilter.SERVICE, serviceInstanceId, jobId);
}
if (requestId != null){
return auditService.getAuditStatusFromMsoByRequestId(jobId, requestId);
@@ -123,5 +141,36 @@ public class AsyncInstantiationController extends VidRestrictedBaseController {
}
+ @RequestMapping(value = "auditStatus/{type}/{instanceId}/mso", method = RequestMethod.GET)
+ public List<JobAuditStatus> getAuditStatusFromMsoByInstanceId(HttpServletRequest request,
+ @PathVariable(value="type") JobAuditStatus.ResourceTypeFilter resourceTypeFilter,
+ @PathVariable(value="instanceId") UUID instanceId) {
+ return auditService.getAuditStatusFromMsoByInstanceId(resourceTypeFilter, instanceId, null);
+ }
+
+ @RequestMapping(value = "/bulkForRetry/{jobId}", method = RequestMethod.GET)
+ public ServiceInstantiation getBulkForRetry(HttpServletRequest request, @PathVariable(value="jobId") UUID jobId) {
+ return asyncInstantiationBL.getBulkForRetry(jobId);
+ }
+
+ @RequestMapping(value = "retry/{jobId}", method = RequestMethod.POST)
+ public MsoResponseWrapper2<List<UUID>> retryJobRequest(HttpServletRequest httpServletRequest,
+ @PathVariable(value="jobId") UUID jobId) {
+
+ String userId = new ControllersUtils(systemPropertiesWrapper).extractUserId(httpServletRequest);
+ List<UUID> uuids = asyncInstantiationBL.retryJob(jobId, userId);
+ return new MsoResponseWrapper2(200, uuids);
+ }
+
+ @RequestMapping(value = "/auditStatusForRetry/{trackById}", method = RequestMethod.GET)
+ public JobAuditStatus getResourceAuditStatus(HttpServletRequest request, @PathVariable(value="trackById") String trackById) {
+ return auditService.getResourceAuditStatus(trackById);
+ }
+
+ private void throwExceptionIfAccessDenied(ServiceInstantiation request, HttpServletRequest httpServletRequest, String userId) {
+ if (featureManager.isActive(Features.FLAG_1906_INSTANTIATION_API_USER_VALIDATION) && !roleProvider.getUserRolesValidator(httpServletRequest).isServicePermitted(request.getGlobalSubscriberId(), request.getSubscriptionServiceType())) {
+ throw new AccessDeniedException(String.format("User %s is not allowed to make this request", userId));
+ }
+ }
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java b/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java
index 8d5fbbdbb..20cf6f038 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/MsoConfig.java
@@ -56,8 +56,8 @@ public class MsoConfig {
@Bean
- public MsoBusinessLogic getMsoBusinessLogic(MsoInterface msoClient, FeatureManager featureManager){
- return new MsoBusinessLogicImpl(msoClient, featureManager);
+ public MsoBusinessLogic getMsoBusinessLogic(MsoInterface msoClient){
+ return new MsoBusinessLogicImpl(msoClient);
}
@Bean
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java b/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java
index db3a21910..fc718f0d2 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java
@@ -20,9 +20,9 @@
package org.onap.vid.controller;
+import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
import static org.onap.vid.utils.Logging.getMethodName;
-import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
@@ -31,10 +31,14 @@ import javax.servlet.http.HttpServletResponse;
import org.onap.portalsdk.core.controller.RestrictedBaseController;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.vid.model.ExceptionResponse;
+import org.onap.vid.model.RequestReferencesContainer;
import org.onap.vid.model.SoftDeleteRequest;
import org.onap.vid.mso.MsoBusinessLogic;
import org.onap.vid.mso.MsoResponseWrapper;
import org.onap.vid.mso.MsoResponseWrapper2;
+import org.onap.vid.mso.RestMsoImplementation;
+import org.onap.vid.mso.RestObject;
+import org.onap.vid.mso.rest.MsoRestClientNew;
import org.onap.vid.mso.rest.Request;
import org.onap.vid.mso.rest.RequestDetails;
import org.onap.vid.mso.rest.RequestDetailsWrapper;
@@ -82,11 +86,13 @@ public class MsoController extends RestrictedBaseController {
public static final String START_LOG = " start";
private final MsoBusinessLogic msoBusinessLogic;
+ private final RestMsoImplementation restMso;
private final CloudOwnerService cloudOwnerService;
@Autowired
- public MsoController(MsoBusinessLogic msoBusinessLogic, CloudOwnerService cloudOwnerService) {
+ public MsoController(MsoBusinessLogic msoBusinessLogic, MsoRestClientNew msoClientInterface, CloudOwnerService cloudOwnerService) {
this.msoBusinessLogic = msoBusinessLogic;
+ this.restMso = msoClientInterface;
this.cloudOwnerService = cloudOwnerService;
}
@@ -678,30 +684,35 @@ public class MsoController extends RestrictedBaseController {
@RequestMapping(value = "/mso_activate_fabric_configuration/{serviceInstanceId}", method = RequestMethod.POST)
public MsoResponseWrapper2 activateFabricConfiguration(
- @PathVariable("serviceInstanceId") String serviceInstanceId,
- @RequestBody RequestDetails requestDetails) {
+ @PathVariable("serviceInstanceId") String serviceInstanceId ,
+ @RequestBody RequestDetails requestDetails) {
String methodName = "activateFabricConfiguration";
LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG);
- return msoBusinessLogic.activateFabricConfiguration(serviceInstanceId, requestDetails);
+ String path = msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId);
+ RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(requestDetails, path, RequestReferencesContainer.class);
+
+ return new MsoResponseWrapper2<>(msoResponse);
}
@RequestMapping(value = "/mso_vfmodule_soft_delete/{serviceInstanceId}/{vnfInstanceId}/{vfModuleInstanceId}", method = RequestMethod.POST)
public MsoResponseWrapper2 deactivateAndCloudDelete(
- @PathVariable("serviceInstanceId") String serviceInstanceId,
- @PathVariable("vnfInstanceId") String vnfInstanceId,
- @PathVariable("vfModuleInstanceId") String vfModuleInstanceId,
- @RequestBody SoftDeleteRequest softDeleteRequest) {
+ @PathVariable("serviceInstanceId") String serviceInstanceId,
+ @PathVariable("vnfInstanceId") String vnfInstanceId,
+ @PathVariable("vfModuleInstanceId") String vfModuleInstanceId,
+ @RequestBody SoftDeleteRequest softDeleteRequest) {
String methodName = "deactivateAndCloudDelete";
LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG);
+ String path = msoBusinessLogic.getDeactivateAndCloudDeletePath(serviceInstanceId, vnfInstanceId, vfModuleInstanceId);
RequestDetails requestDetails = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest);
cloudOwnerService.enrichRequestWithCloudOwner(requestDetails);
- return msoBusinessLogic
- .deactivateAndCloudDelete(serviceInstanceId, vnfInstanceId, vfModuleInstanceId, requestDetails);
+ RestObject<RequestReferencesContainer> msoResponse = restMso.PostForObject(new org.onap.vid.changeManagement.RequestDetailsWrapper<>(requestDetails), path, RequestReferencesContainer.class);
+
+ return new MsoResponseWrapper2<>(msoResponse);
}
/**
@@ -723,7 +734,7 @@ public class MsoController extends RestrictedBaseController {
exceptionResponse.setException(e.getClass().toString().replaceFirst("^.*\\.", ""));
exceptionResponse.setMessage(e.getMessage());
- response.getWriter().write(new ObjectMapper().writeValueAsString(exceptionResponse));
+ response.getWriter().write(JACKSON_OBJECT_MAPPER.writeValueAsString(exceptionResponse));
response.flushBuffer();
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
index 8d55c62c6..6f4ce4ddb 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/WebConfig.java
@@ -21,6 +21,8 @@
package org.onap.vid.controller;
+import static org.apache.commons.lang3.ObjectUtils.defaultIfNull;
+
import static org.apache.commons.lang3.StringUtils.isEmpty;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -29,6 +31,7 @@ import io.joshworks.restclient.http.mapper.ObjectMapper;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletContext;
+import java.util.concurrent.Executors;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.aai.AaiClient;
import org.onap.vid.aai.AaiClientInterface;
@@ -54,6 +57,7 @@ import org.onap.vid.asdc.rest.SdcRestClient;
import org.onap.vid.client.SyncRestClient;
import org.onap.vid.client.SyncRestClientInterface;
import org.onap.vid.properties.AsdcClientConfiguration;
+import org.onap.vid.properties.VidProperties;
import org.onap.vid.scheduler.SchedulerService;
import org.onap.vid.scheduler.SchedulerServiceImpl;
import org.onap.vid.services.AAIServiceTree;
@@ -73,6 +77,12 @@ import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import javax.servlet.ServletContext;
+import java.io.File;
+import java.io.IOException;
+import java.util.concurrent.ExecutorService;
+
@EnableSwagger2
@Configuration
public class WebConfig {
@@ -95,8 +105,8 @@ public class WebConfig {
@Bean
public AaiService getAaiService(AaiClientInterface aaiClient, AaiOverTLSClientInterface aaiOverTLSClient,
- AaiResponseTranslator aaiResponseTranslator, AAITreeNodeBuilder aaiTreeNode, AAIServiceTree aaiServiceTree) {
- return new AaiServiceImpl(aaiClient, aaiOverTLSClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree);
+ AaiResponseTranslator aaiResponseTranslator, AAITreeNodeBuilder aaiTreeNode, AAIServiceTree aaiServiceTree, ExecutorService executorService) {
+ return new AaiServiceImpl(aaiClient, aaiOverTLSClient, aaiResponseTranslator, aaiTreeNode, aaiServiceTree, executorService);
}
@Bean
@@ -223,4 +233,10 @@ public class WebConfig {
.paths(PathSelectors.any())
.build();
}
+
+ @Bean
+ public ExecutorService executorService() {
+ int threadsCount = defaultIfNull(Integer.parseInt(SystemProperties.getProperty(VidProperties.VID_THREAD_COUNT)), 1);
+ return Executors.newFixedThreadPool(threadsCount);
+ }
}