aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java4
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceOperationBusinessLogic.java50
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java73
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ServiceBusinessLogic.java7
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java3
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java84
6 files changed, 76 insertions, 145 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java
index fee386ab29..453564e2f8 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/BaseBusinessLogic.java
@@ -166,6 +166,10 @@ public abstract class BaseBusinessLogic {
public void setInterfaceOperation(InterfaceOperation interfaceOperation) {
this.interfaceOperation = interfaceOperation;
}
+ public void setInterfaceOperationBusinessLogic(InterfaceOperationBusinessLogic interfaceOperationBusinessLogic) {
+ this.interfaceOperationBusinessLogic = interfaceOperationBusinessLogic;
+ }
+
User validateUserNotEmpty(User user, String ecompErrorContext) {
return userValidations.validateUserNotEmpty(user, ecompErrorContext);
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceOperationBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceOperationBusinessLogic.java
index 792e23af3b..6f822fd7e3 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceOperationBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceOperationBusinessLogic.java
@@ -18,12 +18,9 @@
package org.openecomp.sdc.be.components.impl;
import fj.data.Either;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
import org.openecomp.sdc.be.components.validation.InterfaceOperationValidation;
import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
import org.openecomp.sdc.be.model.ArtifactDefinition;
import org.openecomp.sdc.be.model.InterfaceDefinition;
@@ -39,6 +36,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
+
@Component("interfaceOperationBusinessLogic")
public class InterfaceOperationBusinessLogic extends BaseBusinessLogic {
@@ -273,4 +276,43 @@ public class InterfaceOperationBusinessLogic extends BaseBusinessLogic {
}
return Either.left(true);
}
+
+ public Either<Boolean, ResponseFormat> validateComponentNameAndUpdateInterfaces(org.openecomp.sdc.be.model.Component oldComponent,
+ org.openecomp.sdc.be.model.Component newComponent) {
+ if(!oldComponent.getName().equals(newComponent.getName()) ) {
+ Collection<InterfaceDefinition> interfaceDefinitionListFromToscaName = InterfaceUtils
+ .getInterfaceDefinitionListFromToscaName(oldComponent.getInterfaces().values(),
+ oldComponent.getName());
+ for (InterfaceDefinition interfaceDefinition : interfaceDefinitionListFromToscaName) {
+
+ Either<InterfaceDefinition, ResponseFormat> interfaceDefinitionResponseEither = updateInterfaceDefinition(oldComponent,
+ newComponent, interfaceDefinition);
+ if(interfaceDefinitionResponseEither.isRight()) {
+ return Either.right(interfaceDefinitionResponseEither.right().value());
+ }
+ }
+ }
+ return Either.left(Boolean.TRUE);
+ }
+ private Either<InterfaceDefinition, ResponseFormat > updateInterfaceDefinition(org.openecomp.sdc.be.model.Component oldComponent,
+ org.openecomp.sdc.be.model.Component newComponent,
+ InterfaceDefinition interfaceDefinition) {
+ InterfaceUtils.createInterfaceToscaResourceName(newComponent.getName());
+ interfaceDefinition.setToscaResourceName(InterfaceUtils
+ .createInterfaceToscaResourceName(newComponent.getName()));
+ try {
+ Either<InterfaceDefinition, StorageOperationStatus> interfaceUpdate = interfaceOperation
+ .updateInterface(oldComponent.getUniqueId(), interfaceDefinition);
+ if (interfaceUpdate.isRight()) {
+ LOGGER.error("Failed to Update interface {}. Response is {}. ", newComponent.getName(), interfaceUpdate.right().value());
+ titanDao.rollback();
+ return Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(interfaceUpdate.right().value(), ComponentTypeEnum.RESOURCE)));
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception occurred during update interface toscaResourceName : {}", e);
+ titanDao.rollback();
+ return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
+ }
+ return Either.left( interfaceDefinition);
+ }
}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
index 492f5bf850..6bb8c5c613 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
@@ -63,8 +63,6 @@ import org.openecomp.sdc.be.model.*;
import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
import org.openecomp.sdc.be.model.category.CategoryDefinition;
import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
-import org.openecomp.sdc.be.model.jsontitan.operations.InterfaceOperation;
-import org.openecomp.sdc.be.model.jsontitan.utils.InterfaceUtils;
import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
import org.openecomp.sdc.be.model.operations.StorageException;
import org.openecomp.sdc.be.model.operations.api.*;
@@ -171,13 +169,6 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
@Autowired
private CsarBusinessLogic csarBusinessLogic;
- @Autowired
- private InterfaceOperation interfaceOperation;
-
- public void setInterfaceOperation(InterfaceOperation interfaceOperation) {
- this.interfaceOperation = interfaceOperation;
- }
-
public LifecycleBusinessLogic getLifecycleBusinessLogic() {
return lifecycleBusinessLogic;
}
@@ -3987,7 +3978,8 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
newResource.setDerivedFrom(null);
}
- Either<Boolean, ResponseFormat> validateAndUpdateInterfacesEither = validateAndUpdateInterfaces(resourceIdToUpdate, newResource);
+ Either<Boolean, ResponseFormat> validateAndUpdateInterfacesEither =
+ interfaceOperationBusinessLogic.validateComponentNameAndUpdateInterfaces(currentResource, newResource);
if (validateAndUpdateInterfacesEither.isRight()) {
log.error("failed to validate and update Interfaces");
rollbackNeeded = true;
@@ -5172,65 +5164,4 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
return super.shouldUpgradeToLatestDerived(clonedComponent);
}
}
-
- private Either<Boolean, ResponseFormat> validateAndUpdateInterfaces(String resourceId, Resource resourceUpdate) {
- Either<Resource, StorageOperationStatus> resourceStorageOperationStatusEither =
- toscaOperationFacade.getToscaElement(resourceId);
- if (resourceStorageOperationStatusEither.isRight()) {
- StorageOperationStatus errorStatus = resourceStorageOperationStatusEither.right().value();
- log.error("Failed to fetch resource information by resource id {}, error {}", resourceId, errorStatus);
- return Either.right(componentsUtils
- .getResponseFormat(componentsUtils.convertFromStorageResponse(errorStatus)));
- }
-
- Resource storedResource = resourceStorageOperationStatusEither.left().value();
- Map<String, InterfaceDefinition> storedResourceInterfaces = storedResource.getInterfaces();
-
- if(!storedResource.getName().equals(resourceUpdate.getName()) ) {
- Collection<InterfaceDefinition> interfaceDefinitionListFromToscaName = InterfaceUtils
- .getInterfaceDefinitionListFromToscaName(storedResource.getInterfaces().values(),
- storedResource.getName());
-
- for (InterfaceDefinition interfaceDefinition : storedResourceInterfaces.values()) {
- Either<InterfaceDefinition, ResponseFormat> updateInterfaceDefinitionEither = updateInterfaceDefinition(resourceUpdate,
- interfaceDefinition,
- interfaceDefinitionListFromToscaName);
- if(updateInterfaceDefinitionEither.isRight()) {
- return Either.right(updateInterfaceDefinitionEither.right().value());
- }
- }
- }
-
- return Either.left(Boolean.TRUE);
- }
-
- private Either<InterfaceDefinition, ResponseFormat > updateInterfaceDefinition(Resource resourceUpdate,
- InterfaceDefinition interfaceDefinition,
- Collection<InterfaceDefinition> interfaceDefinitionListFromToscaName) {
- interfaceDefinitionListFromToscaName.forEach(interfaceDefinitionFromList -> {
- if(interfaceDefinitionFromList.getToscaResourceName().equals(interfaceDefinition.getToscaResourceName())) {
- log.info("Going to Update interface definition toscaResourceName {} to {}",
- interfaceDefinitionFromList.getToscaResourceName(),
- InterfaceUtils.createInterfaceToscaResourceName(resourceUpdate.getName()));
- interfaceDefinition.setToscaResourceName(InterfaceUtils
- .createInterfaceToscaResourceName(resourceUpdate.getName()));
- }
- } );
- try {
- Either<InterfaceDefinition, StorageOperationStatus> interfaceUpdate = interfaceOperation
- .updateInterface(resourceUpdate.getUniqueId(), interfaceDefinition);
- if (interfaceUpdate.isRight()) {
- log.error("Failed to Update interface {}. Response is {}. ", resourceUpdate.getName(), interfaceUpdate.right().value());
- titanDao.rollback();
- return Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(interfaceUpdate.right().value(), ComponentTypeEnum.RESOURCE)));
- }
- } catch (Exception e) {
- log.error("Exception occurred during update interface toscaResourceName : {}", e);
- titanDao.rollback();
- return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
- }
-
- return Either.left( interfaceDefinition);
- }
-
} \ No newline at end of file
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 f30088ce9c..e85afdc48f 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
@@ -518,7 +518,11 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
log.info("Restricted operation for user: {}, on service: {}", user.getUserId(), currentService.getCreatorUserId());
return Either.right(componentsUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION));
}
-
+ Either<Boolean, ResponseFormat> validateAndUpdateInterfacesEither = interfaceOperationBusinessLogic.validateComponentNameAndUpdateInterfaces(currentService, serviceUpdate);
+ if (validateAndUpdateInterfacesEither.isRight()) {
+ log.info("failed to validate and update Interfaces on service {}", currentService.getCreatorUserId());
+ return Either.right(validateAndUpdateInterfacesEither.right().value());
+ }
Either<Service, ResponseFormat> validationRsponse = validateAndUpdateServiceMetadata(user, currentService, serviceUpdate);
if (validationRsponse.isRight()) {
log.info("service update metadata: validations field.");
@@ -789,7 +793,6 @@ public class ServiceBusinessLogic extends ComponentBusinessLogic {
validateAndUpdateEcompNaming(currentService, serviceUpdate);
currentService.setEnvironmentContext(serviceUpdate.getEnvironmentContext());
-
return Either.left(currentService);
} catch (ComponentException exception) {
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java
index f7e95867ec..13d0665e35 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java
@@ -154,6 +154,7 @@ public class ResourceBusinessLogicTest {
WebApplicationContext webAppContext = Mockito.mock(WebApplicationContext.class);
IInterfaceLifecycleOperation interfaceTypeOperation = Mockito.mock(IInterfaceLifecycleOperation.class);
InterfaceOperation interfaceOperation = Mockito.mock(InterfaceOperation.class);
+ InterfaceOperationBusinessLogic interfaceOperationBl = Mockito.mock(InterfaceOperationBusinessLogic.class);
@InjectMocks
ResourceBusinessLogic bl = new ResourceBusinessLogic();
@@ -239,6 +240,7 @@ public class ResourceBusinessLogicTest {
Map<String, DataTypeDefinition> emptyDataTypes = new HashMap<>();
when(applicationDataTypeCache.getAll()).thenReturn(Either.left(emptyDataTypes));
when(mockTitanDao.commit()).thenReturn(TitanOperationStatus.OK);
+ when(interfaceOperationBl.validateComponentNameAndUpdateInterfaces(any(Component.class), any(Component.class))).thenReturn(Either.left(true));
// BL object
artifactManager.setNodeTemplateOperation(nodeTemplateOperation);
@@ -261,6 +263,7 @@ public class ResourceBusinessLogicTest {
bl.setUserValidations(userValidations);
bl.setInterfaceTypeOperation(interfaceTypeOperation);
bl.setInterfaceOperation(interfaceOperation);
+ bl.setInterfaceOperationBusinessLogic(interfaceOperationBl);
csarBusinessLogic.setCsarOperation(csarOperation);
Resource resourceCsar = createResourceObjectCsar(true);
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java
index 7a36d92c76..feef31cbc1 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java
@@ -15,19 +15,13 @@
*/
package org.openecomp.sdc.be.model.jsontitan.utils;
+import org.apache.commons.collections.CollectionUtils;
+import org.openecomp.sdc.be.model.InterfaceDefinition;
+
import java.util.Collection;
import java.util.Formatter;
-import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
-import org.apache.commons.collections.CollectionUtils;
-import org.openecomp.sdc.be.datatypes.elements.InputDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition;
-import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition;
-import org.openecomp.sdc.be.model.InputDefinition;
-import org.openecomp.sdc.be.model.InterfaceDefinition;
-import org.openecomp.sdc.be.model.Operation;
import org.openecomp.sdc.common.util.ValidationUtils;
public class InterfaceUtils {
@@ -35,80 +29,34 @@ public class InterfaceUtils {
public static final String INTERFACE_TOSCA_RESOURCE_NAME = "org.openecomp.interfaces.node.lifecycle.%s";
public static final Optional<InterfaceDefinition> getInterfaceDefinitionFromToscaName(
- Collection<InterfaceDefinition> interfaces,
- String resourceName) {
+ Collection<InterfaceDefinition> interfaces,
+ String componentName) {
if (CollectionUtils.isEmpty(interfaces)) {
return Optional.empty();
}
- String toscaName = createInterfaceToscaResourceName(resourceName);
+ String toscaName = createInterfaceToscaResourceName(componentName);
return interfaces.stream().filter(
- interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
- .getToscaResourceName().equals(toscaName)).findAny();
+ interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
+ .getToscaResourceName().equals(toscaName)).findAny();
}
public static Collection<InterfaceDefinition> getInterfaceDefinitionListFromToscaName(Collection<InterfaceDefinition> interfaces,
- String resourceName) {
- if(CollectionUtils.isEmpty(interfaces)){
+ String componentName) {
+ if (CollectionUtils.isEmpty(interfaces)) {
return CollectionUtils.EMPTY_COLLECTION;
}
- String toscaName = createInterfaceToscaResourceName(resourceName);
+ String toscaName = createInterfaceToscaResourceName(componentName);
return interfaces.stream().filter(
- interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
- .getToscaResourceName().equals(toscaName)).collect(Collectors.toList());
+ interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
+ .getToscaResourceName().equals(toscaName)).collect(Collectors.toList());
}
- public static String createInterfaceToscaResourceName(String resourceName) {
+ public static String createInterfaceToscaResourceName(String componentName) {
StringBuilder sb = new StringBuilder();
- try(Formatter formatter = new Formatter(sb)){
- return formatter.format(INTERFACE_TOSCA_RESOURCE_NAME, ValidationUtils.convertToSystemName(resourceName)).toString();
+ try (Formatter formatter = new Formatter(sb)) {
+ return formatter.format(INTERFACE_TOSCA_RESOURCE_NAME, ValidationUtils.convertToSystemName(componentName)).toString();
}
}
-
- public static void createInputOutput(Operation operation, List<InputDefinition> inputs, List<InputDefinition> outputs) throws IllegalStateException {
- ListDataDefinition<OperationInputDefinition> inputDefinitionListDataDefinition = operation.getInputs();
- if (inputDefinitionListDataDefinition != null) {
- return;
- }
- List<OperationInputDefinition> inputListToscaDataDefinition = inputDefinitionListDataDefinition.getListToscaDataDefinition();
- List<OperationInputDefinition> convertedInputs = inputListToscaDataDefinition.stream()
- .map(input -> convertInput(input, inputs))
- .collect(Collectors.toList());
-
- ListDataDefinition<OperationOutputDefinition> outputDefinitionListDataDefinition = operation.getOutputs();
- if (outputDefinitionListDataDefinition != null) {
- return;
- }
- List<OperationOutputDefinition> outputListToscaDataDefinition = outputDefinitionListDataDefinition.getListToscaDataDefinition();
- List<OperationOutputDefinition> convertedOutputs = outputListToscaDataDefinition.stream()
- .map(output -> convertOutput(output, outputs) )
- .collect(Collectors.toList());
-
- inputDefinitionListDataDefinition.getListToscaDataDefinition().clear();
- inputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedInputs);
- outputDefinitionListDataDefinition.getListToscaDataDefinition().clear();
- outputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedOutputs);
- }
-
- private static OperationInputDefinition convertInput(OperationInputDefinition input,
- List<InputDefinition> inputs) throws IllegalStateException {
- Optional<InputDefinition> anyInputDefinition = inputs.stream()
- .filter(inp -> inp.getUniqueId().equals(input.getUniqueId())).findAny();
- if (anyInputDefinition.isPresent()) {
- return new OperationInputDefinition(input.getLabel(),new InputDataDefinition(anyInputDefinition.get()));
- }
- throw new IllegalStateException("Could not find input :"+ input.getLabel());
- }
-
- private static OperationOutputDefinition convertOutput(OperationOutputDefinition output,
- List<InputDefinition> outputs) throws IllegalStateException {
- Optional<InputDefinition> anyOutputDefinition = outputs.stream()
- .filter(op -> op.getUniqueId().equals(output.getUniqueId())).findAny();
- if (anyOutputDefinition.isPresent()) {
- return new OperationOutputDefinition(output.getLabel(),new InputDataDefinition(anyOutputDefinition.get()));
- }
- throw new IllegalStateException("Could not find output :"+ output.getLabel());
- }
-
}