diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java | 110 |
1 files changed, 37 insertions, 73 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java index 577d1f5e32..2cccc31ded 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java @@ -109,10 +109,8 @@ import org.openecomp.sdc.be.impl.WebAppContextWrapper; import org.openecomp.sdc.be.model.ArtifactDefinition; import org.openecomp.sdc.be.model.CapabilityDefinition; import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstInputsMap; import org.openecomp.sdc.be.model.ComponentInstance; import org.openecomp.sdc.be.model.ComponentInstanceInterface; -import org.openecomp.sdc.be.model.ComponentInstancePropInput; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.ComponentParametersView; import org.openecomp.sdc.be.model.DistributionStatusEnum; @@ -191,12 +189,13 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { private final ServiceInstantiationTypeValidator serviceInstantiationTypeValidator; private final ServiceCategoryValidator serviceCategoryValidator; private final ServiceValidator serviceValidator; + private final PolicyBusinessLogic policyBusinessLogic; + private final GroupBusinessLogic groupBusinessLogic; private ForwardingPathOperation forwardingPathOperation; private AuditCassandraDao auditCassandraDao; private ServiceTypeValidator serviceTypeValidator; private List<ServiceCreationPlugin> serviceCreationPluginList; private ServiceFunctionValidator serviceFunctionValidator; - private final InputsBusinessLogic inputsBusinessLogic; public ServiceBusinessLogic(IElementOperation elementDao, IGroupOperation groupOperation, IGroupInstanceOperation groupInstanceOperation, IGroupTypeOperation groupTypeOperation, GroupBusinessLogic groupBusinessLogic, InterfaceOperation interfaceOperation, @@ -211,7 +210,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { final ServiceRoleValidator serviceRoleValidator, final ServiceInstantiationTypeValidator serviceInstantiationTypeValidator, final ServiceCategoryValidator serviceCategoryValidator, final ServiceValidator serviceValidator, - final InputsBusinessLogic inputsBusinessLogic) { + final PolicyBusinessLogic policyBusinessLogic) { super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation, artifactsBusinessLogic, artifactToscaOperation, componentContactIdValidator, componentNameValidator, componentTagsValidator, componentValidator, componentIconValidator, componentProjectCodeValidator, componentDescriptionValidator); @@ -225,7 +224,8 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { this.serviceInstantiationTypeValidator = serviceInstantiationTypeValidator; this.serviceCategoryValidator = serviceCategoryValidator; this.serviceValidator = serviceValidator; - this.inputsBusinessLogic = inputsBusinessLogic; + this.policyBusinessLogic = policyBusinessLogic; + this.groupBusinessLogic = groupBusinessLogic; } @Autowired @@ -311,7 +311,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } Optional<ComponentInstance> serviceInstanceCandidate = componentInstances.stream() .filter(instance -> instance.getUniqueId().equals(serviceInstanceId)).findAny(); - if (serviceInstanceCandidate.isEmpty()) { + if (!serviceInstanceCandidate.isPresent()) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.INTERFACE_OPERATION_NOT_FOUND, serviceInstanceId)); } Map<String, List<ComponentInstanceInterface>> componentInstancesInterfaces = parentService.getComponentInstancesInterfaces(); @@ -324,7 +324,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { } ComponentInstance serviceInstance = serviceInstanceCandidate.get(); Optional<InterfaceDefinition> interfaceCandidate = InterfaceOperationUtils.getInterfaceDefinitionFromOperationId(interfaces, operationId); - if (interfaceCandidate.isEmpty()) { + if (!interfaceCandidate.isPresent()) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.INTERFACE_OPERATION_NOT_FOUND, serviceInstanceId)); } InterfaceDefinition interfaceDefinition = interfaceCandidate.get(); @@ -336,7 +336,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { Either<Operation, ResponseFormat> operationEither = Either.left(operation); ListDataDefinition<OperationInputDefinition> inputs = operation.getInputs(); Optional<OperationInputDefinition> inputCandidate = getOperationInputByInputId(serviceConsumptionData, inputs); - if (inputCandidate.isEmpty()) { + if (!inputCandidate.isPresent()) { return Either.right(new ResponseFormat(HttpStatus.NOT_FOUND.value())); } OperationInputDefinition operationInputDefinition = inputCandidate.get(); @@ -419,7 +419,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { .getListToscaDataDefinition(); } else { Optional<ComponentInstance> getComponentInstance = containerService.getComponentInstanceById(source); - if (getComponentInstance.isEmpty()) { + if (!getComponentInstance.isPresent()) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.COMPONENT_INSTANCE_NOT_FOUND_ON_CONTAINER, source)); } ComponentInstance componentInstance = getComponentInstance.get(); @@ -692,7 +692,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { private Either<Service, ResponseFormat> createServiceByDao(final Service service, final User user) { log.debug("send service {} to dao for create", service.getComponentMetadataDefinition().getMetadataDataDefinition().getName()); - final Either<Boolean, ResponseFormat> lockResult = lockComponentByName(service.getSystemName(), service, "Create Service"); + Either<Boolean, ResponseFormat> lockResult = lockComponentByName(service.getSystemName(), service, "Create Service"); if (lockResult.isRight()) { ResponseFormat responseFormat = lockResult.right().value(); componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE, ComponentTypeEnum.SERVICE); @@ -710,64 +710,25 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { generateAndAddInputsFromGenericTypeProperties(service, genericType); } beforeCreate(service); - final Either<Service, StorageOperationStatus> dataModelResponse = toscaOperationFacade.createToscaComponent(service); - if (dataModelResponse.isRight()) { - ResponseFormat responseFormat = componentsUtils - .getResponseFormatByComponent(componentsUtils.convertFromStorageResponse(dataModelResponse.right().value()), service, - ComponentTypeEnum.SERVICE); - log.debug(AUDIT_BEFORE_SENDING_RESPONSE); + Either<Service, StorageOperationStatus> dataModelResponse = toscaOperationFacade.createToscaComponent(service); + if (dataModelResponse.isLeft()) { + log.debug("Service '{}' created successfully", service.getName()); + ResponseFormat responseFormat = componentsUtils.getResponseFormat(ActionStatus.CREATED); componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE, ComponentTypeEnum.SERVICE); - return Either.right(responseFormat); + ASDCKpiApi.countCreatedServicesKPI(); + return Either.left(dataModelResponse.left().value()); } - final Service createdService = dataModelResponse.left().value(); - if (createdService.isSubstituteCandidate() || genericTypeBusinessLogic.hasMandatorySubstitutionType(createdService)) { - updateInputs(createdService); - } - log.debug("Service '{}' created successfully", createdService.getName()); - final ResponseFormat responseFormat = componentsUtils.getResponseFormat(ActionStatus.CREATED); - componentsUtils.auditComponentAdmin(responseFormat, user, createdService, AuditingActionEnum.CREATE_RESOURCE, ComponentTypeEnum.SERVICE); - ASDCKpiApi.countCreatedServicesKPI(); - return Either.left(createdService); + ResponseFormat responseFormat = componentsUtils + .getResponseFormatByComponent(componentsUtils.convertFromStorageResponse(dataModelResponse.right().value()), service, + ComponentTypeEnum.SERVICE); + log.debug(AUDIT_BEFORE_SENDING_RESPONSE); + componentsUtils.auditComponentAdmin(responseFormat, user, service, AuditingActionEnum.CREATE_RESOURCE, ComponentTypeEnum.SERVICE); + return Either.right(responseFormat); } finally { graphLockOperation.unlockComponentByName(service.getSystemName(), service.getUniqueId(), NodeTypeEnum.Service); } } - private void updateInputs(final Service service) { - final List<InputDefinition> genericTypeInputs = service.getInputs(); - final Either<List<InputDefinition>, ResponseFormat> inputs = inputsBusinessLogic.getInputs(service.getCreatorUserId(), service.getUniqueId()); - if (inputs.isRight() || CollectionUtils.isEmpty(inputs.left().value())) { - log.warn("Failed to declare Generic Type Properties as Inputs"); - service.setInputs(null); - return; - } - inputs.left().value().forEach( - inputDefinition -> inputsBusinessLogic.deleteInput(service.getUniqueId(), service.getCreatorUserId(), inputDefinition.getUniqueId())); - - service.setInputs(null); - if (CollectionUtils.isNotEmpty(genericTypeInputs)) { - // From SELF - final ComponentInstInputsMap componentInstInputsMap = new ComponentInstInputsMap(); - final List<ComponentInstancePropInput> componentInstancePropInputs = genericTypeInputs.stream() - .map(prop -> { - prop.setInstanceUniqueId(service.getUniqueId()); - prop.setParentUniqueId(service.getUniqueId()); - return new ComponentInstancePropInput(new ComponentInstanceProperty(prop)); - } - ).collect(Collectors.toList()); - componentInstInputsMap.setServiceProperties(Collections.singletonMap(service.getUniqueId(), componentInstancePropInputs)); - - final Either<List<InputDefinition>, ResponseFormat> listResponseFormatEither = inputsBusinessLogic.declareProperties( - service.getCreatorUserId(), service.getUniqueId(), ComponentTypeEnum.SERVICE, componentInstInputsMap); - if (listResponseFormatEither.isRight()) { - log.warn("Failed to declare Generic Type Properties as Inputs"); - service.setInputs(null); - return; - } - service.setInputs(listResponseFormatEither.left().value()); - } - } - private void beforeCreate(final Service service) { if (CollectionUtils.isEmpty(serviceCreationPluginList)) { return; @@ -784,7 +745,10 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { @SuppressWarnings("unchecked") private void createServiceApiArtifactsData(Service service, User user) { // create mandatory artifacts - // TODO it must be removed after that artifact uniqueId creation will be moved to ArtifactOperation + + // TODO it must be removed after that artifact uniqueId creation will be + + // moved to ArtifactOperation String serviceUniqueId = service.getUniqueId(); Map<String, ArtifactDefinition> artifactMap = service.getServiceApiArtifacts(); if (artifactMap == null) { @@ -1666,13 +1630,13 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { BeEcompErrorManager.getInstance() .logBeComponentMissingError("markDistributionAsDeployed", ComponentTypeEnum.SERVICE.getValue(), serviceId); log.debug("service {} not found", serviceId); - ResponseFormat responseFormat = auditDeployError(did, user, null, + ResponseFormat responseFormat = auditDeployError(did, user, auditAction, null, componentsUtils.convertFromStorageResponse(getServiceResponse.right().value(), ComponentTypeEnum.SERVICE), ""); return Either.right(responseFormat); } Service service = getServiceResponse.left().value(); user = validateRoleForDeploy(did, user, auditAction, service); - return checkDistributionAndDeploy(did, user, service); + return checkDistributionAndDeploy(did, user, auditAction, service); } public Either<Service, ResponseFormat> generateVfModuleArtifacts(Service service, User modifier, boolean shouldLock, boolean inTransaction) { @@ -1746,13 +1710,13 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { return null; } - private synchronized Either<Service, ResponseFormat> checkDistributionAndDeploy(String distributionId, User user, + private synchronized Either<Service, ResponseFormat> checkDistributionAndDeploy(String distributionId, User user, AuditingActionEnum auditAction, Service service) { boolean isDeployed = isDistributionDeployed(distributionId); if (isDeployed) { return Either.left(service); } - Either<Boolean, ResponseFormat> distributionSuccess = checkDistributionSuccess(distributionId, user, service); + Either<Boolean, ResponseFormat> distributionSuccess = checkDistributionSuccess(distributionId, user, auditAction, service); if (distributionSuccess.isRight()) { return Either.right(distributionSuccess.right().value()); } @@ -1775,20 +1739,20 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { return isDeployed; } - protected Either<Boolean, ResponseFormat> checkDistributionSuccess(String did, User user, Service service) { + protected Either<Boolean, ResponseFormat> checkDistributionSuccess(String did, User user, AuditingActionEnum auditAction, Service service) { log.trace("checkDistributionSuccess"); // get all "DRequest" records for this distribution Either<List<ResourceAdminEvent>, ActionStatus> distRequestsResponse = auditCassandraDao .getDistributionRequest(did, AuditingActionEnum.DISTRIBUTION_STATE_CHANGE_REQUEST.getName()); if (distRequestsResponse.isRight()) { - ResponseFormat error = auditDeployError(did, user, service, distRequestsResponse.right().value()); + ResponseFormat error = auditDeployError(did, user, auditAction, service, distRequestsResponse.right().value()); return Either.right(error); } List<ResourceAdminEvent> distributionRequests = distRequestsResponse.left().value(); if (distributionRequests.isEmpty()) { BeEcompErrorManager.getInstance().logBeDistributionMissingError("markDistributionAsDeployed", did); log.info("distribution {} is not found", did); - ResponseFormat error = auditDeployError(did, user, service, ActionStatus.DISTRIBUTION_REQUESTED_NOT_FOUND); + ResponseFormat error = auditDeployError(did, user, auditAction, service, ActionStatus.DISTRIBUTION_REQUESTED_NOT_FOUND); return Either.right(error); } boolean isRequestSucceeded = false; @@ -1803,7 +1767,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { Either<List<DistributionNotificationEvent>, ActionStatus> distNotificationsResponse = auditCassandraDao .getDistributionNotify(did, AuditingActionEnum.DISTRIBUTION_NOTIFY.getName()); if (distNotificationsResponse.isRight()) { - ResponseFormat error = auditDeployError(did, user, service, distNotificationsResponse.right().value()); + ResponseFormat error = auditDeployError(did, user, auditAction, service, distNotificationsResponse.right().value()); return Either.right(error); } List<DistributionNotificationEvent> distributionNotifications = distNotificationsResponse.left().value(); @@ -1819,13 +1783,13 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { if (!(isRequestSucceeded && isNotificationsSucceeded)) { log.info("distribution {} has failed", did); ResponseFormat error = componentsUtils.getResponseFormat(ActionStatus.DISTRIBUTION_REQUESTED_FAILED, did); - auditDeployError(did, user, service, ActionStatus.DISTRIBUTION_REQUESTED_FAILED, did); + auditDeployError(did, user, auditAction, service, ActionStatus.DISTRIBUTION_REQUESTED_FAILED, did); return Either.right(error); } return Either.left(true); } - private ResponseFormat auditDeployError(String did, User user, Service service, ActionStatus status, + private ResponseFormat auditDeployError(String did, User user, AuditingActionEnum auditAction, Service service, ActionStatus status, String... params) { ResponseFormat error = componentsUtils.getResponseFormat(status, params); String message = ""; @@ -1853,7 +1817,7 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic { validateUserRole(user, service, roles, auditAction, null); } catch (ByActionStatusComponentException e) { log.info("role {} is not allowed to perform this action", user.getRole()); - auditDeployError(did, user, service, e.getActionStatus()); + auditDeployError(did, user, auditAction, service, e.getActionStatus()); throw e; } return user; |