aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-model
diff options
context:
space:
mode:
authorpriyanshu <pagarwal@amdocs.com>2019-01-14 15:46:55 +0530
committerpriyanshu <pagarwal@amdocs.com>2019-01-14 15:46:55 +0530
commit5b9d9a134778d4dc7bf45474ba13be6ba0c46282 (patch)
treea9dde66cc370513384670ad9587605795774bfbd /catalog-model
parentefc185c60153bed4988abbb159e2103ec7653f83 (diff)
Interface operation feature enhancements
1. API restructuring to enhance model and provide more capabilities. 2. Allowed multiple interface creation under same resource/service. 3. Enhanced validations to align with updated model. 4. API restructuring to align UI model with Tosca model. 5. Enhanced Junit and code coverage. 6. Added BDD and CI-API tests. Change-Id: I2d8ac8a6154fd9be8254836ba0da1540210031c0 Issue-ID: SDC-1999 Signed-off-by: priyanshu <pagarwal@amdocs.com>
Diffstat (limited to 'catalog-model')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperation.java231
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/TopologyTemplateOperation.java36
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java62
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UiComponentDataTransfer.java11
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/ResourceTest.java1
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperationTest.java (renamed from catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfacesOperationTest.java)541
-rw-r--r--catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtilsTest.java50
7 files changed, 328 insertions, 604 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperation.java
index f9f2ce9b35..b4433d1be0 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperation.java
@@ -17,223 +17,82 @@
package org.openecomp.sdc.be.model.jsontitan.operations;
import fj.data.Either;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.UUID;
-import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
-import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
-import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
+import java.util.stream.Collectors;
+import org.apache.commons.collections.MapUtils;
import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
-import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
+import org.openecomp.sdc.be.datatypes.elements.InterfaceDataDefinition;
import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
-import org.openecomp.sdc.be.model.ArtifactDefinition;
import org.openecomp.sdc.be.model.InterfaceDefinition;
-import org.openecomp.sdc.be.model.Operation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
-import org.springframework.beans.factory.annotation.Autowired;
@org.springframework.stereotype.Component("interfaces-operation")
public class InterfaceOperation extends BaseOperation {
- @Autowired
- private ArtifactCassandraDao artifactCassandraDao;
-
- public Either<InterfaceDefinition, StorageOperationStatus> addInterface(String componentId,
- InterfaceDefinition interfaceDefinition) {
- return addOrUpdateInterface(false, componentId, interfaceDefinition);
- }
-
- public Either<InterfaceDefinition, StorageOperationStatus> updateInterface(String componentId,
- InterfaceDefinition interfaceDefinition) {
- return addOrUpdateInterface(true, componentId, interfaceDefinition);
- }
-
- private Either<InterfaceDefinition, StorageOperationStatus> addOrUpdateInterface(
- boolean isUpdateAction, String componentId, InterfaceDefinition interfaceDefinition) {
-
- StorageOperationStatus statusRes;
- Either<GraphVertex, TitanOperationStatus> getToscaElementRes;
-
- getToscaElementRes = titanDao.getVertexById(componentId, JsonParseFlagEnum.NoParse);
- if (getToscaElementRes.isRight()) {
- TitanOperationStatus status = getToscaElementRes.right().value();
- statusRes = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return Either.right(statusRes);
- }
- GraphVertex componentVertex = getToscaElementRes.left().value();
- if (!isUpdateAction) {
- interfaceDefinition.setUniqueId(UUID.randomUUID().toString());
+ public Either<List<InterfaceDefinition>, StorageOperationStatus> addInterfaces(String componentId,
+ List<InterfaceDefinition> interfaceDefinitions) {
+ return addOrUpdateInterfaces(false, componentId, interfaceDefinitions);
}
- statusRes = performUpdateToscaAction(isUpdateAction, componentVertex,
- Collections.singletonList(interfaceDefinition), EdgeLabelEnum.INTERFACE, VertexTypeEnum.INTERFACE);
- if (!statusRes.equals(StorageOperationStatus.OK)) {
- return Either.right(statusRes);
- }
- return Either.left(interfaceDefinition);
- }
-
- public Either<Operation, StorageOperationStatus> addInterfaceOperation(String componentId, InterfaceDefinition interfaceDef, Operation interfaceOperation) {
- return addOrUpdateInterfaceOperation(false, componentId, interfaceDef, interfaceOperation);
- }
- public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String componentId, InterfaceDefinition interfaceDef, Operation interfaceOperation) {
- return addOrUpdateInterfaceOperation(true, componentId, interfaceDef, interfaceOperation);
- }
+ private Either<List<InterfaceDefinition>, StorageOperationStatus> addOrUpdateInterfaces(boolean isUpdateAction,
+ String componentId, List<InterfaceDefinition> interfaceDefinitions) {
- private Either<Operation, StorageOperationStatus> addOrUpdateInterfaceOperation(boolean isUpdateAction, String componentId, InterfaceDefinition interfaceDef, Operation operation) {
-
- StorageOperationStatus statusRes;
- Either<GraphVertex, TitanOperationStatus> getToscaElementRes;
- Either<GraphVertex, TitanOperationStatus> getToscaElementInt;
-
- if(isUpdateAction && operation.getImplementationArtifact() != null){
- String artifactUUID = operation.getImplementationArtifact().getArtifactUUID();
- Either<Long, CassandraOperationStatus> artifactCount = artifactCassandraDao.getCountOfArtifactById(artifactUUID);
- if(artifactCount.isLeft()){
- CassandraOperationStatus cassandraStatus = artifactCassandraDao.deleteArtifact(artifactUUID);
- if (cassandraStatus != CassandraOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertCassandraStatusToStorageStatus(cassandraStatus));
+ List<ToscaDataDefinition> interfaceDataDefinitions =
+ interfaceDefinitions.stream().map(InterfaceDataDefinition::new).collect(Collectors.toList());
+ StorageOperationStatus statusRes =
+ performUpdateToscaAction(isUpdateAction, componentId, interfaceDataDefinitions, EdgeLabelEnum.INTERFACE,
+ VertexTypeEnum.INTERFACE);
+ if (!statusRes.equals(StorageOperationStatus.OK)) {
+ return Either.right(statusRes);
}
- }
- }
-
- getToscaElementRes = titanDao.getVertexById(componentId, JsonParseFlagEnum.NoParse);
- if (getToscaElementRes.isRight()) {
- TitanOperationStatus status = getToscaElementRes.right().value();
- statusRes = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return Either.right(statusRes);
- }
- GraphVertex componentVertex = getToscaElementRes.left().value();
- getToscaElementInt = titanDao.getChildVertex(componentVertex, EdgeLabelEnum.INTERFACE, JsonParseFlagEnum.NoParse);
- if (getToscaElementInt.isRight()) {
- TitanOperationStatus status = getToscaElementInt.right().value();
- statusRes = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return Either.right(statusRes);
- }
- GraphVertex interfaceVertex = getToscaElementInt.left().value();
-
- statusRes = performUpdateToscaAction(isUpdateAction, interfaceVertex,
- Collections.singletonList(operation), EdgeLabelEnum.INTERFACE_OPERATION, VertexTypeEnum.INTERFACE_OPERATION);
- if (!statusRes.equals(StorageOperationStatus.OK)) {
- return Either.right(statusRes);
+ return Either.left(interfaceDefinitions);
}
- getUpdatedInterfaceDef(interfaceDef, operation, operation.getUniqueId());
- Either<InterfaceDefinition, StorageOperationStatus> intUpdateStatus = updateInterface(componentId, interfaceDef);
- if (intUpdateStatus.isRight() && !intUpdateStatus.right().value().equals(StorageOperationStatus.OK)) {
- return Either.right(statusRes);
- }
-
- return Either.left(operation);
- }
-
- public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String componentId, InterfaceDefinition interfaceDef, String operationToDelete) {
- Either<GraphVertex, TitanOperationStatus> getInterfaceVertex;
- Either<GraphVertex, TitanOperationStatus> getComponentVertex;
- Operation operation = new Operation();
- StorageOperationStatus status;
-
- getComponentVertex = titanDao.getVertexById(componentId, JsonParseFlagEnum.NoParse);
- if (getComponentVertex.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getComponentVertex.right().value()));
+ private StorageOperationStatus performUpdateToscaAction(boolean isUpdate, String componentId,
+ List<ToscaDataDefinition> toscaDataList, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel) {
+ if (isUpdate) {
+ return updateToscaDataOfToscaElement(componentId, edgeLabel, vertexLabel, toscaDataList,
+ JsonPresentationFields.UNIQUE_ID);
+ } else {
+ return addToscaDataToToscaElement(componentId, edgeLabel, vertexLabel, toscaDataList,
+ JsonPresentationFields.UNIQUE_ID);
+ }
}
- getInterfaceVertex = titanDao.getChildVertex(getComponentVertex.left().value(), EdgeLabelEnum.INTERFACE, JsonParseFlagEnum.NoParse);
- if (getInterfaceVertex.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getInterfaceVertex.right().value()));
+ public Either<List<InterfaceDefinition>, StorageOperationStatus> updateInterfaces(String componentId,
+ List<InterfaceDefinition> interfaceDefinitions) {
+ return addOrUpdateInterfaces(true, componentId, interfaceDefinitions);
}
- if (!interfaceDef.getOperationsMap().isEmpty()) {
- Either<GraphVertex, TitanOperationStatus> getInterfaceOpVertex =
- titanDao.getChildVertex(getInterfaceVertex.left().value(), EdgeLabelEnum.INTERFACE_OPERATION,
- JsonParseFlagEnum.NoParse);
- if (getInterfaceOpVertex.isRight()) {
- List<ToscaDataDefinition> toscaDataList = new ArrayList<>(interfaceDef.getOperationsMap().values());
- StorageOperationStatus statusRes =
- addToscaDataToToscaElement(getInterfaceVertex.left().value(), EdgeLabelEnum.INTERFACE_OPERATION,
- VertexTypeEnum.INTERFACE_OPERATION, toscaDataList, JsonPresentationFields.UNIQUE_ID);
- if (!statusRes.equals(StorageOperationStatus.OK)) {
- return Either.right(statusRes);
- }
- }
- }
+ public Either<String, StorageOperationStatus> deleteInterface(String componentId, String interfacesToDelete) {
- Optional<Entry<String, Operation>> operationToRemove = interfaceDef.getOperationsMap().entrySet().stream()
- .filter(entry -> entry.getValue().getUniqueId().equals(operationToDelete)).findAny();
- if (operationToRemove.isPresent()){
- Map.Entry<String, Operation> stringOperationEntry = operationToRemove.get();
- operation = stringOperationEntry.getValue();
- ArtifactDefinition implementationArtifact = operation.getImplementationArtifact();
- if(implementationArtifact != null){
- String artifactUUID = implementationArtifact.getArtifactUUID();
- CassandraOperationStatus cassandraStatus = artifactCassandraDao.deleteArtifact(artifactUUID);
- if (cassandraStatus != CassandraOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertCassandraStatusToStorageStatus(cassandraStatus));
+ StorageOperationStatus statusRes = deleteToscaDataElements(componentId, EdgeLabelEnum.INTERFACE,
+ Collections.singletonList(interfacesToDelete));
+ if (!statusRes.equals(StorageOperationStatus.OK)) {
+ return Either.right(statusRes);
}
- }
- if(interfaceDef.getOperationsMap().size() > 1){
- status = deleteToscaDataElements(getInterfaceVertex.left().value(), EdgeLabelEnum.INTERFACE_OPERATION, Collections.singletonList(operationToDelete));
- if (status != StorageOperationStatus.OK) {
- return Either.right(status);
- }
- } else {
- status = removeToscaDataVertex(getInterfaceVertex.left().value(), EdgeLabelEnum.INTERFACE_OPERATION, VertexTypeEnum.INTERFACE_OPERATION);
- if (status != StorageOperationStatus.OK) {
- return Either.right(status);
+ Either<Map<String, InterfaceDataDefinition>, TitanOperationStatus> componentEither =
+ getDataFromGraph(componentId, EdgeLabelEnum.INTERFACE);
+ if (componentEither.isRight()) {
+ return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(componentEither.right().value()));
}
- }
- getUpdatedInterfaceDef(interfaceDef, null, operationToDelete);
- if (interfaceDef.getOperations().isEmpty()) {
- status = deleteToscaDataElements(getComponentVertex.left().value(), EdgeLabelEnum.INTERFACE, Collections.singletonList(interfaceDef.getUniqueId()));
- if (status != StorageOperationStatus.OK) {
- return Either.right(status);
- }
- status = removeToscaDataVertex(getComponentVertex.left().value(), EdgeLabelEnum.INTERFACE, VertexTypeEnum.INTERFACE);
- if (status != StorageOperationStatus.OK) {
- return Either.right(status);
+ Map<String, InterfaceDataDefinition> interfaceDataDefinitionMap = componentEither.left().value();
+ if (MapUtils.isEmpty(interfaceDataDefinitionMap)) {
+ statusRes = removeToscaData(componentId, EdgeLabelEnum.INTERFACE, VertexTypeEnum.INTERFACE);
+ if (!statusRes.equals(StorageOperationStatus.OK)) {
+ return Either.right(statusRes);
+ }
}
- }
- else {
- Either<InterfaceDefinition, StorageOperationStatus> intUpdateStatus = updateInterface(componentId, interfaceDef);
- if (intUpdateStatus.isRight() && !intUpdateStatus.right().value().equals(StorageOperationStatus.OK)) {
- return Either.right(status);
- }
- }
- }
- return Either.left(operation);
- }
-
- private StorageOperationStatus performUpdateToscaAction(boolean isUpdate, GraphVertex graphVertex,
- List<ToscaDataDefinition> toscaDataList, EdgeLabelEnum edgeLabel, VertexTypeEnum vertexLabel) {
- if (isUpdate) {
- return updateToscaDataOfToscaElement(graphVertex, edgeLabel, vertexLabel, toscaDataList, JsonPresentationFields.UNIQUE_ID);
- } else {
- return addToscaDataToToscaElement(graphVertex, edgeLabel, vertexLabel, toscaDataList, JsonPresentationFields.UNIQUE_ID);
- }
- }
- private void getUpdatedInterfaceDef(InterfaceDefinition interfaceDef, Operation operation, String operationId){
- Map<String, Operation> operationMap = interfaceDef.getOperationsMap();
- if(operation != null){
- operationMap.put(operationId, operation);
- interfaceDef.setOperationsMap(operationMap);
+ return Either.left(interfacesToDelete);
}
- else {
- operationMap.remove(operationId);
- interfaceDef.setOperationsMap(operationMap);
- }
- }
-
-}
-
+} \ No newline at end of file
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/TopologyTemplateOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/TopologyTemplateOperation.java
index 9a87874b2a..3bdec2a30a 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/TopologyTemplateOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/TopologyTemplateOperation.java
@@ -44,7 +44,6 @@ import org.openecomp.sdc.be.model.category.CategoryDefinition;
import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElementTypeEnum;
-import org.openecomp.sdc.be.model.jsontitan.enums.JsonConstantKeysEnum;
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.StorageOperationStatus;
@@ -729,15 +728,6 @@ public class TopologyTemplateOperation extends ToscaElementOperation {
if (assosiateElementToData.isRight()) {
return assosiateElementToData.right().value();
}
- else {
- Map<String, OperationDataDefinition> operationMap = interfaceMap.values().stream().filter(op -> MapUtils.isNotEmpty(op.getOperations())).flatMap(a -> a.getOperations().entrySet().stream()).collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
- if(MapUtils.isNotEmpty(operationMap)) {
- Either<GraphVertex, StorageOperationStatus> assosiateOpToInterface = associateElementToData(assosiateElementToData.left().value(), VertexTypeEnum.INTERFACE_OPERATION, EdgeLabelEnum.INTERFACE_OPERATION, operationMap);
- if (assosiateOpToInterface.isRight()) {
- return assosiateOpToInterface.right().value();
- }
- }
- }
}
return StorageOperationStatus.OK;
}
@@ -1062,25 +1052,17 @@ public class TopologyTemplateOperation extends ToscaElementOperation {
log.debug("Failed to disassociate service api artifacts for {} error {}", toscaElementVertex.getUniqueId(), status);
Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
}
-
- Either<GraphVertex, TitanOperationStatus> getInterfaceVertex = titanDao.getChildVertex(toscaElementVertex, EdgeLabelEnum.INTERFACE, JsonParseFlagEnum.NoParse);
- if (getInterfaceVertex.isLeft()) {
- status = titanDao.disassociateAndDeleteLast(getInterfaceVertex.left().value(), Direction.OUT, EdgeLabelEnum.INTERFACE_OPERATION);
- if (status != TitanOperationStatus.OK) {
- log.debug("Failed to disassociate interface operations for {} error {}", getInterfaceVertex.left().value().getUniqueId(), status);
- Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- else {
- status = titanDao.disassociateAndDeleteLast(toscaElementVertex, Direction.OUT, EdgeLabelEnum.INTERFACE);
- if (status != TitanOperationStatus.OK) {
- log.debug("Failed to disassociate interfaces for {} error {}", toscaElementVertex.getUniqueId(), status);
- Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
+ status = titanDao.disassociateAndDeleteLast(toscaElementVertex, Direction.OUT, EdgeLabelEnum.INTERFACE);
+ if (status != TitanOperationStatus.OK) {
+ log.debug("Failed to disassociate interfaces for {} error {}", toscaElementVertex.getUniqueId(), status);
+ Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
}
-
titanDao.disassociateAndDeleteLast(toscaElementVertex, Direction.OUT, EdgeLabelEnum.INSTANCE_ARTIFACTS);
+ if (status != TitanOperationStatus.OK) {
+ log.debug("Failed to disassociate instance artifact for {} error {}", toscaElementVertex.getUniqueId(), status);
+ Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
+ }
+
toscaElementVertex.getVertex().remove();
log.trace("Tosca element vertex for {} was removed", toscaElementVertex.getUniqueId());
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
deleted file mode 100644
index feef31cbc1..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright © 2016-2018 European Support Limited
- *
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-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.Optional;
-import java.util.stream.Collectors;
-import org.openecomp.sdc.common.util.ValidationUtils;
-
-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 componentName) {
- if (CollectionUtils.isEmpty(interfaces)) {
- return Optional.empty();
- }
-
- String toscaName = createInterfaceToscaResourceName(componentName);
- return interfaces.stream().filter(
- interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
- .getToscaResourceName().equals(toscaName)).findAny();
- }
-
- public static Collection<InterfaceDefinition> getInterfaceDefinitionListFromToscaName(Collection<InterfaceDefinition> interfaces,
- String componentName) {
- if (CollectionUtils.isEmpty(interfaces)) {
- return CollectionUtils.EMPTY_COLLECTION;
- }
-
- String toscaName = createInterfaceToscaResourceName(componentName);
- return interfaces.stream().filter(
- interfaceDefinition -> interfaceDefinition.getToscaResourceName() != null && interfaceDefinition
- .getToscaResourceName().equals(toscaName)).collect(Collectors.toList());
- }
-
- 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(componentName)).toString();
- }
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UiComponentDataTransfer.java b/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UiComponentDataTransfer.java
index 0090f86f0e..43df6da2e6 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UiComponentDataTransfer.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/ui/model/UiComponentDataTransfer.java
@@ -20,7 +20,7 @@
package org.openecomp.sdc.be.ui.model;
-import org.openecomp.sdc.be.datatypes.elements.InterfaceOperationDataDefinition;
+
import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
import org.openecomp.sdc.be.model.ArtifactDefinition;
@@ -78,17 +78,8 @@ public class UiComponentDataTransfer {
protected List<AdditionalInformationDefinition> additionalInformation;
- private Map<String, InterfaceOperationDataDefinition> interfaceOperations;
private Map<String, InterfaceDefinition> interfaces;
- public Map<String, InterfaceOperationDataDefinition> getInterfaceOperations() {
- return interfaceOperations;
- }
-
- public void setInterfaceOperations(Map<String, InterfaceOperationDataDefinition> interfaceOperations) {
- this.interfaceOperations = interfaceOperations;
- }
-
public Map<String, InterfaceDefinition> getInterfaces() {
return interfaces;
}
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/ResourceTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/ResourceTest.java
index 2ecb4b444c..0d5614f176 100644
--- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/ResourceTest.java
+++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/ResourceTest.java
@@ -3,7 +3,6 @@ package org.openecomp.sdc.be.model;
import mockit.Deencapsulation;
import org.junit.Assert;
import org.junit.Test;
-import org.openecomp.sdc.be.datatypes.elements.InterfaceOperationDataDefinition;
import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
import org.openecomp.sdc.be.unittests.utils.ModelConfDependentTest;
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfacesOperationTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperationTest.java
index 375208d24e..fe2ea209f9 100644
--- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfacesOperationTest.java
+++ b/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/operations/InterfaceOperationTest.java
@@ -6,6 +6,7 @@ import static org.junit.Assert.assertTrue;
import fj.data.Either;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -48,35 +49,27 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:application-context-test.xml")
-public class InterfacesOperationTest extends ModelTestBase {
- @Resource
- protected TitanDao titanDao;
-
- @Resource
- private InterfaceOperation interfaceOperation;
-
- @Resource
- protected NodeTypeOperation nodeTypeOperation;
-
- @Resource
- protected TopologyTemplateOperation topologyTemplateOperation;
-
- @Resource
- private ToscaElementLifecycleOperation lifecycleOperation;
+public class InterfaceOperationTest extends ModelTestBase {
private static final String RESOURCE_NAME = "Resource Name";
private static final String RESOURCE_ID = "resourceID";
-
private static final String SERVICE_NAME = "Service Name";
private static final String SERVICE_ID = "serviceID";
-
private final String categoryName = "category";
private final String subcategory = "mycategory";
-
- private GraphVertex ownerVertex;
-
private final Service service = createService();
private final org.openecomp.sdc.be.model.Resource resource = createResource();
+ @Resource
+ protected TitanDao titanDao;
+ @Resource
+ protected NodeTypeOperation nodeTypeOperation;
+ @Resource
+ protected TopologyTemplateOperation topologyTemplateOperation;
+ @Resource
+ private InterfaceOperation interfaceOperation;
+ @Resource
+ private ToscaElementLifecycleOperation lifecycleOperation;
+ private GraphVertex ownerVertex;
@BeforeClass
public static void initInterfacesOperation() {
@@ -96,165 +89,35 @@ public class InterfacesOperationTest extends ModelTestBase {
createTopologyTemplate("firstService");
}
- @After
- public void cleanAfter() {
- GraphTestUtils.clearGraph(titanDao);
- }
-
- @Test
- public void testAddInterface_Service(){testAddInterface(service);}
-
- @Test
- public void testAddInterface_Resource(){testAddInterface(resource);}
-
- @Test
- public void testUpdateInterface_Service(){testUpdateInterface(service);}
-
- @Test
- public void testUpdateInterface_Resource(){testUpdateInterface(resource);}
-
- @Test
- public void testAddInterfaceOperation_Service(){testAddInterfaceOperation(service);}
-
- @Test
- public void testAddInterfaceOperation_Resource(){testAddInterfaceOperation(resource);}
-
- @Test
- public void testUpdateInterfaceOperation_Service(){testUpdateInterfaceOperation(service);}
-
- @Test
- public void testUpdateInterfaceOperation_Resource(){testUpdateInterfaceOperation(resource);}
-
- @Test
- public void testDeleteInterfaceOperation_Service(){testDeleteInterfaceOperation(service);}
-
- @Test
- public void testDeleteInterfaceOperation_Resource(){testDeleteInterfaceOperation(resource);}
-
- @Test
- public void testUpdateInterfaceShouldFailWhenNOtCreatedFirst() {
- Component component = createResource();
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- interfaceDefinition.setOperationsMap(createMockOperationMap());
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.updateInterface(component.getUniqueId(),
- interfaceDefinition);
- Assert.assertTrue(res.isRight());
- }
-
- private void testAddInterface(Component component) {
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.addInterface(component.getUniqueId(),
- interfaceDefinition);
- Assert.assertTrue(res.isLeft());
- }
-
- private void testUpdateInterface(Component component) {
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- interfaceDefinition.setOperationsMap(createMockOperationMap());
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.addInterface(component.getUniqueId(), interfaceDefinition);
- Assert.assertTrue(res.isLeft());
- InterfaceDefinition value = res.left().value();
- String new_description = "New Description";
- value.setDescription(new_description);
- res = interfaceOperation.updateInterface(component.getUniqueId(), interfaceDefinition);
- assertTrue(res.isLeft());
- assertEquals(new_description,res.left().value().getDescription());
- }
-
- private void testAddInterfaceOperation(Component component) {
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.addInterface(component.getUniqueId(), interfaceDefinition);
- Assert.assertTrue(res.isLeft());
- InterfaceDefinition value = res.left().value();
- Operation op = createMockOperation();
- Either<Operation, StorageOperationStatus> addInterfaceOperationRes = interfaceOperation.addInterfaceOperation(component.getUniqueId(), value, op);
- assertTrue(addInterfaceOperationRes.isLeft());
- }
-
- private void testUpdateInterfaceOperation(Component component) {
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.addInterface(component.getUniqueId(), interfaceDefinition);
- Assert.assertTrue(res.isLeft());
- InterfaceDefinition value = res.left().value();
- Operation op = createMockOperation();
- Either<Operation, StorageOperationStatus> addInterfaceOperationRes = interfaceOperation.addInterfaceOperation(component.getUniqueId(), value, op);
- Assert.assertTrue(addInterfaceOperationRes.isLeft());
- Operation resultOp = addInterfaceOperationRes.left().value();
- resultOp.setName("New_Create");
- Either<Operation, StorageOperationStatus> updateInterfaceOperationRes = interfaceOperation.updateInterfaceOperation(component.getUniqueId(), value, resultOp);
- assertTrue(updateInterfaceOperationRes.isLeft());
- assertEquals("New_Create", updateInterfaceOperationRes.left().value().getName());
- }
-
- private void testDeleteInterfaceOperation(Component component) {
- InterfaceDefinition interfaceDefinition = buildInterfaceDefinition();
- Either<InterfaceDefinition, StorageOperationStatus> res = interfaceOperation.addInterface(component.getUniqueId(), interfaceDefinition);
- Assert.assertTrue(res.isLeft());
- InterfaceDefinition value = res.left().value();
- Operation op = createMockOperation();
- Either<Operation, StorageOperationStatus> addInterfaceOperationRes = interfaceOperation.addInterfaceOperation(component.getUniqueId(), value, op);
- Assert.assertTrue(addInterfaceOperationRes.isLeft());
- Operation resultOp = addInterfaceOperationRes.left().value();
- Either<Operation, StorageOperationStatus> deleteInterfaceOperationRes = interfaceOperation.deleteInterfaceOperation(component.getUniqueId(), value, resultOp.getUniqueId());
- assertTrue(deleteInterfaceOperationRes.isLeft());
- }
-
- private InterfaceDefinition buildInterfaceDefinition() {
- InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
- interfaceDefinition.setType("tosca.interfaces.standard");
- interfaceDefinition.setCreationDate(101232L);
- return interfaceDefinition;
- }
-
- private org.openecomp.sdc.be.model.Resource createResource() {
- org.openecomp.sdc.be.model.Resource resource = new org.openecomp.sdc.be.model.Resource();
- resource.setUniqueId(RESOURCE_ID);
- resource.setName(RESOURCE_NAME);
- resource.setDescription("My short description");
- resource.setInterfaces(createMockInterfaceDefinition());
- return resource;
- }
+ private void createUsers() {
+ GraphVertex ownerV = new GraphVertex(VertexTypeEnum.USER);
+ ownerV.setUniqueId("user1");
- private Service createService() {
- Service service = new Service();
- service.setUniqueId(SERVICE_ID);
- service.setName(SERVICE_NAME);
- service.setDescription("My short description");
- service.setInterfaces(createMockInterfaceDefinition());
- return service;
- }
+ Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
+ metadataProperties.put(GraphPropertyEnum.USERID, ownerV.getUniqueId());
+ metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
+ metadataProperties.put(GraphPropertyEnum.NAME, "user1");
+ ownerV.setMetadataProperties(metadataProperties);
+ ownerV.updateMetadataJsonWithCurrentMetadataProperties();
+ ownerV.setJson(new HashMap<>());
+ Either<GraphVertex, TitanOperationStatus> createUserRes = titanDao.createVertex(ownerV);
- private InterfaceDefinition createInterface(String uniqueID, String description, String type, String toscaResourceName,
- Map<String, Operation> op) {
- InterfaceDefinition id = new InterfaceDefinition();
- id.setType(type);
- id.setDescription(description);
- id.setUniqueId(uniqueID);
- id.setToscaResourceName(toscaResourceName);
- id.setOperationsMap(op);
- return id;
- }
+ ownerVertex = createUserRes.left().value();
- private Map<String, InterfaceDefinition> createMockInterfaceDefinition() {
- Map<String, Operation> operationMap = createMockOperationMap();
- Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
- interfaceDefinitionMap.put("int1", createInterface("int1", "Interface 1",
- "lifecycle", "tosca", operationMap));
- return interfaceDefinitionMap;
- }
+ GraphVertex modifierV = new GraphVertex(VertexTypeEnum.USER);
+ modifierV.setUniqueId("user2");
- private Map<String, Operation> createMockOperationMap() {
- Map<String, Operation> operationMap = new HashMap<>();
- operationMap.put("op1", createMockOperation());
- return operationMap;
- }
+ metadataProperties = new HashMap<>();
+ metadataProperties.put(GraphPropertyEnum.USERID, modifierV.getUniqueId());
+ metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
+ metadataProperties.put(GraphPropertyEnum.NAME, "user2");
+ modifierV.setMetadataProperties(metadataProperties);
+ modifierV.updateMetadataJsonWithCurrentMetadataProperties();
+ modifierV.setJson(new HashMap<>());
+ createUserRes = titanDao.createVertex(modifierV);
+ createUserRes.left().value();
- private Operation createMockOperation() {
- Operation operation = new Operation();
- operation.setDefinition(false);
- operation.setName("create");
- operation.setUniqueId("op1");
- return operation;
+ lifecycleOperation.findUser(ownerVertex.getUniqueId());
}
private void createResourceCategory() {
@@ -265,7 +128,8 @@ public class InterfacesOperationTest extends ModelTestBase {
metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, catId);
metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_CATEGORY.getName());
metadataProperties.put(GraphPropertyEnum.NAME, categoryName);
- metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
+ metadataProperties
+ .put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
cat.setMetadataProperties(metadataProperties);
cat.updateMetadataJsonWithCurrentMetadataProperties();
@@ -276,13 +140,15 @@ public class InterfacesOperationTest extends ModelTestBase {
metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, subCatId);
metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.RESOURCE_SUBCATEGORY.getName());
metadataProperties.put(GraphPropertyEnum.NAME, subcategory);
- metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(subcategory));
+ metadataProperties
+ .put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(subcategory));
subCat.setMetadataProperties(metadataProperties);
subCat.updateMetadataJsonWithCurrentMetadataProperties();
Either<GraphVertex, TitanOperationStatus> catRes = titanDao.createVertex(cat);
Either<GraphVertex, TitanOperationStatus> subCatRes = titanDao.createVertex(subCat);
- titanDao.createEdge(catRes.left().value().getVertex(), subCatRes.left().value().getVertex(), EdgeLabelEnum.SUB_CATEGORY, new HashMap<>());
+ titanDao.createEdge(catRes.left().value().getVertex(), subCatRes.left().value().getVertex(),
+ EdgeLabelEnum.SUB_CATEGORY, new HashMap<>());
}
private void createServiceCategory() {
@@ -293,32 +159,64 @@ public class InterfacesOperationTest extends ModelTestBase {
metadataProperties.put(GraphPropertyEnum.UNIQUE_ID, catId);
metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.SERVICE_CATEGORY.getName());
metadataProperties.put(GraphPropertyEnum.NAME, categoryName);
- metadataProperties.put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
+ metadataProperties
+ .put(GraphPropertyEnum.NORMALIZED_NAME, ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
cat.setMetadataProperties(metadataProperties);
cat.updateMetadataJsonWithCurrentMetadataProperties();
titanDao.createVertex(cat);
}
- private void createTopologyTemplate(String name) {
- TopologyTemplate service = new TopologyTemplate();
+ private void createRootNodeType() {
+ NodeType vf = new NodeType();
String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
- service.setUniqueId(uniqueId);
- service.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
- service.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), name);
- service.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
- service.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
- service.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(), ResourceTypeEnum.VF.name());
- service.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(), ComponentTypeEnum.RESOURCE);
+ vf.setUniqueId(uniqueId);
+ vf.setComponentType(ComponentTypeEnum.RESOURCE);
+ vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
+ vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), "root");
+ vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
+ vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "1.0");
+ vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(), ResourceTypeEnum.VFC.name());
+ vf.getMetadata()
+ .put(JsonPresentationFields.LIFECYCLE_STATE.getPresentation(), LifecycleStateEnum.CERTIFIED.name());
+ vf.getMetadata().put(JsonPresentationFields.TOSCA_RESOURCE_NAME.getPresentation(), "root");
+ vf.getMetadata().put(JsonPresentationFields.HIGHEST_VERSION.getPresentation(), true);
+
List<CategoryDefinition> categories = new ArrayList<>();
CategoryDefinition cat = new CategoryDefinition();
categories.add(cat);
cat.setName(categoryName);
- service.setCategories(categories);
+ List<SubCategoryDefinition> subCategories = new ArrayList<>();
+ SubCategoryDefinition subCat = new SubCategoryDefinition();
+ subCat.setName(subcategory);
+ subCategories.add(subCat);
+ cat.setSubcategories(subCategories);
+ vf.setCategories(categories);
- service.setComponentType(ComponentTypeEnum.SERVICE);
- Either<TopologyTemplate, StorageOperationStatus> createRes = topologyTemplateOperation.createTopologyTemplate(service);
- Either<GraphVertex, TitanOperationStatus> getNodeTyeRes = titanDao.getVertexById(createRes.left().value().getUniqueId());
+ List<String> derivedFrom = new ArrayList<>();
+ vf.setDerivedFrom(derivedFrom);
+
+ Map<String, PropertyDataDefinition> properties = new HashMap<>();
+ PropertyDataDefinition prop1 = new PropertyDataDefinition();
+ prop1.setName("derived1");
+ prop1.setDefaultValue("deriveddef1");
+ properties.put("derived1", prop1);
+
+ PropertyDataDefinition prop2 = new PropertyDataDefinition();
+ prop2.setUniqueId("derived2");
+ prop2.setName("deriveddef2");
+ properties.put("derived2", prop2);
+ PropertyDataDefinition prop3 = new PropertyDataDefinition();
+ prop3.setName("derived3");
+ prop3.setDefaultValue("deriveddef3");
+ properties.put("derived3", prop3);
+
+ vf.setProperties(properties);
+ vf.setComponentType(ComponentTypeEnum.RESOURCE);
+ Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
+
+ Either<GraphVertex, TitanOperationStatus> getNodeTyeRes =
+ titanDao.getVertexById(createVFRes.left().value().getUniqueId());
getNodeTyeRes.left().value();
}
@@ -347,11 +245,6 @@ public class InterfacesOperationTest extends ModelTestBase {
vf.setDerivedFrom(derivedFrom);
vf.setComponentType(ComponentTypeEnum.RESOURCE);
- Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
-
- Either<GraphVertex, TitanOperationStatus> getNodeTyeRes = titanDao.getVertexById(createVFRes.left().value().getUniqueId());
-
- GraphVertex vfVertex = getNodeTyeRes.left().value();
List<PropertyDataDefinition> addProperties = new ArrayList<>();
PropertyDataDefinition prop11 = new PropertyDataDefinition();
@@ -365,22 +258,30 @@ public class InterfacesOperationTest extends ModelTestBase {
prop22.setDefaultValue("def22");
addProperties.add(prop22);
- StorageOperationStatus status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, addProperties, JsonPresentationFields.NAME);
- assertSame(status, StorageOperationStatus.OK);
+ Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
+ Either<GraphVertex, TitanOperationStatus> getNodeTyeRes =
+ titanDao.getVertexById(createVFRes.left().value().getUniqueId());
+ GraphVertex vfVertex = getNodeTyeRes.left().value();
+ StorageOperationStatus status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES,
+ VertexTypeEnum.PROPERTIES, addProperties, JsonPresentationFields.NAME);
+ assertSame(StorageOperationStatus.OK, status);
PropertyDataDefinition prop33 = new PropertyDataDefinition();
prop33.setName("prop33");
prop33.setDefaultValue("def33");
- status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop33, JsonPresentationFields.NAME);
- assertSame(status, StorageOperationStatus.OK);
+ status = nodeTypeOperation
+ .addToscaDataToToscaElement(vfVertex, EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES,
+ prop33, JsonPresentationFields.NAME);
+ assertSame(StorageOperationStatus.OK, status);
PropertyDataDefinition prop44 = new PropertyDataDefinition();
prop44.setName("prop44");
prop44.setDefaultValue("def44");
- status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex.getUniqueId(), EdgeLabelEnum.PROPERTIES, VertexTypeEnum.PROPERTIES, prop44, JsonPresentationFields.NAME);
- assertSame(status, StorageOperationStatus.OK);
+ status = nodeTypeOperation.addToscaDataToToscaElement(vfVertex.getUniqueId(), EdgeLabelEnum.PROPERTIES,
+ VertexTypeEnum.PROPERTIES, prop44, JsonPresentationFields.NAME);
+ assertSame(StorageOperationStatus.OK, status);
PropertyDataDefinition capProp = new PropertyDataDefinition();
capProp.setName("capProp");
@@ -392,96 +293,200 @@ public class InterfacesOperationTest extends ModelTestBase {
Map<String, MapDataDefinition> capProps = new HashMap<>();
capProps.put("capName", dataToCreate);
- nodeTypeOperation.associateElementToData(
- vfVertex, VertexTypeEnum.CAPABILITIES_PROPERTIES, EdgeLabelEnum.CAPABILITIES_PROPERTIES, capProps);
+ nodeTypeOperation.associateElementToData(vfVertex, VertexTypeEnum.CAPABILITIES_PROPERTIES,
+ EdgeLabelEnum.CAPABILITIES_PROPERTIES, capProps);
List<String> pathKeys = new ArrayList<>();
pathKeys.add("capName");
capProp.setDefaultValue("BBBB");
- nodeTypeOperation.updateToscaDataDeepElementOfToscaElement(vfVertex, EdgeLabelEnum.CAPABILITIES_PROPERTIES, VertexTypeEnum.CAPABILITIES_PROPERTIES, capProp, pathKeys, JsonPresentationFields.NAME);
+ nodeTypeOperation.updateToscaDataDeepElementOfToscaElement(vfVertex, EdgeLabelEnum.CAPABILITIES_PROPERTIES,
+ VertexTypeEnum.CAPABILITIES_PROPERTIES, capProp, pathKeys, JsonPresentationFields.NAME);
}
- private void createRootNodeType() {
- NodeType vf = new NodeType();
+ private void createTopologyTemplate(String name) {
+ TopologyTemplate service = new TopologyTemplate();
String uniqueId = UniqueIdBuilder.buildResourceUniqueId();
- vf.setUniqueId(uniqueId);
- vf.setComponentType(ComponentTypeEnum.RESOURCE);
- vf.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
- vf.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), "root");
- vf.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
- vf.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "1.0");
- vf.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(), ResourceTypeEnum.VFC.name());
- vf.getMetadata().put(JsonPresentationFields.LIFECYCLE_STATE.getPresentation(), LifecycleStateEnum.CERTIFIED.name());
- vf.getMetadata().put(JsonPresentationFields.TOSCA_RESOURCE_NAME.getPresentation(), "root");
- vf.getMetadata().put(JsonPresentationFields.HIGHEST_VERSION.getPresentation(), true);
-
+ service.setUniqueId(uniqueId);
+ service.setCreatorUserId((String) ownerVertex.getMetadataProperty(GraphPropertyEnum.USERID));
+ service.getMetadata().put(JsonPresentationFields.NAME.getPresentation(), name);
+ service.getMetadata().put(JsonPresentationFields.UNIQUE_ID.getPresentation(), uniqueId);
+ service.getMetadata().put(JsonPresentationFields.VERSION.getPresentation(), "0.1");
+ service.getMetadata().put(JsonPresentationFields.TYPE.getPresentation(), ResourceTypeEnum.VF.name());
+ service.getMetadata().put(JsonPresentationFields.COMPONENT_TYPE.getPresentation(), ComponentTypeEnum.RESOURCE);
List<CategoryDefinition> categories = new ArrayList<>();
CategoryDefinition cat = new CategoryDefinition();
categories.add(cat);
cat.setName(categoryName);
- List<SubCategoryDefinition> subCategories = new ArrayList<>();
- SubCategoryDefinition subCat = new SubCategoryDefinition();
- subCat.setName(subcategory);
- subCategories.add(subCat);
- cat.setSubcategories(subCategories);
- vf.setCategories(categories);
+ service.setCategories(categories);
- List<String> derivedFrom = new ArrayList<>();
- vf.setDerivedFrom(derivedFrom);
+ service.setComponentType(ComponentTypeEnum.SERVICE);
+ Either<TopologyTemplate, StorageOperationStatus> createRes =
+ topologyTemplateOperation.createTopologyTemplate(service);
+ Either<GraphVertex, TitanOperationStatus> getNodeTyeRes =
+ titanDao.getVertexById(createRes.left().value().getUniqueId());
- Map<String, PropertyDataDefinition> properties = new HashMap<>();
- PropertyDataDefinition prop1 = new PropertyDataDefinition();
- prop1.setName("derived1");
- prop1.setDefaultValue("deriveddef1");
- properties.put("derived1", prop1);
+ getNodeTyeRes.left().value();
+ }
- PropertyDataDefinition prop2 = new PropertyDataDefinition();
- prop2.setUniqueId("derived2");
- prop2.setName("deriveddef2");
- properties.put("derived2", prop2);
+ @After
+ public void cleanAfter() {
+ GraphTestUtils.clearGraph(titanDao);
+ }
- PropertyDataDefinition prop3 = new PropertyDataDefinition();
- prop3.setName("derived3");
- prop3.setDefaultValue("deriveddef3");
- properties.put("derived3", prop3);
+ @Test
+ public void testAddInterface_Service() {
+ testAddSingleInterface(service);
+ }
- vf.setProperties(properties);
- vf.setComponentType(ComponentTypeEnum.RESOURCE);
- Either<NodeType, StorageOperationStatus> createVFRes = nodeTypeOperation.createNodeType(vf);
+ private void testAddSingleInterface(Component component) {
+ InterfaceDefinition interfaceDefinition = buildInterfaceDefinition("1");
+ Either<List<InterfaceDefinition>, StorageOperationStatus> res = interfaceOperation
+ .addInterfaces(component.getUniqueId(),
+ Collections.singletonList(
+ interfaceDefinition));
+ Assert.assertTrue(res.isLeft());
+ Assert.assertEquals("1", res.left().value().get(0).getUniqueId());
+ }
- Either<GraphVertex, TitanOperationStatus> getNodeTyeRes = titanDao.getVertexById(createVFRes.left().value().getUniqueId());
- getNodeTyeRes.left().value();
+ private InterfaceDefinition buildInterfaceDefinition(String uniqueId) {
+ InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
+ interfaceDefinition.setType("tosca.interfaces.standard");
+ interfaceDefinition.setUniqueId(uniqueId);
+ interfaceDefinition.setOperationsMap(createMockOperationMap());
+ return interfaceDefinition;
}
- private void createUsers() {
- GraphVertex ownerV = new GraphVertex(VertexTypeEnum.USER);
- ownerV.setUniqueId("user1");
+ private Map<String, Operation> createMockOperationMap() {
+ Map<String, Operation> operationMap = new HashMap<>();
+ operationMap.put("op1", createMockOperation());
+ return operationMap;
+ }
- Map<GraphPropertyEnum, Object> metadataProperties = new HashMap<>();
- metadataProperties.put(GraphPropertyEnum.USERID, ownerV.getUniqueId());
- metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
- metadataProperties.put(GraphPropertyEnum.NAME, "user1");
- ownerV.setMetadataProperties(metadataProperties);
- ownerV.updateMetadataJsonWithCurrentMetadataProperties();
- ownerV.setJson(new HashMap<>());
- Either<GraphVertex, TitanOperationStatus> createUserRes = titanDao.createVertex(ownerV);
+ private Operation createMockOperation() {
+ Operation operation = new Operation();
+ operation.setDefinition(false);
+ operation.setName("create");
+ operation.setUniqueId("op1");
+ return operation;
+ }
- ownerVertex = createUserRes.left().value();
+ @Test
+ public void testAddInterface_Resource() {
+ testAddMultipleInterface(resource);
+ }
- GraphVertex modifierV = new GraphVertex(VertexTypeEnum.USER);
- modifierV.setUniqueId("user2");
+ private void testAddMultipleInterface(Component component) {
+ InterfaceDefinition interfaceDefinition1 = buildInterfaceDefinition("1");
+ InterfaceDefinition interfaceDefinition2 = buildInterfaceDefinition("2");
+ List<InterfaceDefinition> interfaceDefinitions = new ArrayList<>();
+ interfaceDefinitions.add(interfaceDefinition1);
+ interfaceDefinitions.add(interfaceDefinition2);
+ Either<List<InterfaceDefinition>, StorageOperationStatus> res =
+ interfaceOperation.addInterfaces(component.getUniqueId(), interfaceDefinitions);
+ Assert.assertTrue(res.isLeft());
+ Assert.assertEquals(2, res.left().value().size());
+ }
- metadataProperties = new HashMap<>();
- metadataProperties.put(GraphPropertyEnum.USERID, modifierV.getUniqueId());
- metadataProperties.put(GraphPropertyEnum.LABEL, VertexTypeEnum.USER.getName());
- metadataProperties.put(GraphPropertyEnum.NAME, "user2");
- modifierV.setMetadataProperties(metadataProperties);
- modifierV.updateMetadataJsonWithCurrentMetadataProperties();
- modifierV.setJson(new HashMap<>());
- createUserRes = titanDao.createVertex(modifierV);
- createUserRes.left().value();
+ @Test
+ public void testUpdateInterface_Service() {
+ testUpdateInterface(service);
+ }
- lifecycleOperation.findUser(ownerVertex.getUniqueId());
+ private void testUpdateInterface(Component component) {
+ InterfaceDefinition interfaceDefinition = buildInterfaceDefinition("1");
+ Either<List<InterfaceDefinition>, StorageOperationStatus> res = interfaceOperation
+ .addInterfaces(component.getUniqueId(),
+ Collections.singletonList(
+ interfaceDefinition));
+ Assert.assertTrue(res.isLeft());
+ List<InterfaceDefinition> value = res.left().value();
+ InterfaceDefinition createdInterfaceDef = value.get(0);
+ String newDescription = "New Description";
+ createdInterfaceDef.setDescription(newDescription);
+ res = interfaceOperation
+ .updateInterfaces(component.getUniqueId(), Collections.singletonList(createdInterfaceDef));
+ assertTrue(res.isLeft());
+ assertEquals(newDescription, res.left().value().get(0).getDescription());
+ }
+
+ @Test
+ public void testUpdateInterface_Resource() {
+ testUpdateInterface(resource);
+ }
+
+ @Test
+ public void testDeleteInterface_Service() {
+ testDeleteInterface(service);
+ }
+
+ private void testDeleteInterface(Component component) {
+ InterfaceDefinition interfaceDefinition = buildInterfaceDefinition("1");
+ Either<List<InterfaceDefinition>, StorageOperationStatus> res = interfaceOperation
+ .addInterfaces(component.getUniqueId(),
+ Collections.singletonList(
+ interfaceDefinition));
+ Assert.assertTrue(res.isLeft());
+ List<InterfaceDefinition> value = res.left().value();
+ Either<String, StorageOperationStatus> deleteInterfaceOperationRes =
+ interfaceOperation.deleteInterface(component.getUniqueId(), value.get(0).getUniqueId());
+ assertTrue(deleteInterfaceOperationRes.isLeft());
+ }
+
+ @Test
+ public void testDeleteInterface_Resource() {
+ testDeleteInterface(resource);
+ }
+
+ @Test
+ public void testUpdateInterfaceShouldFailWhenNOtCreatedFirst() {
+ Component component = createResource();
+ InterfaceDefinition interfaceDefinition = buildInterfaceDefinitionWithoutOperation();
+ interfaceDefinition.setOperationsMap(createMockOperationMap());
+ Either<List<InterfaceDefinition>, StorageOperationStatus> res = interfaceOperation.updateInterfaces(
+ component.getUniqueId(), Collections.singletonList(interfaceDefinition));
+ Assert.assertTrue(res.isRight());
+ }
+
+ private InterfaceDefinition buildInterfaceDefinitionWithoutOperation() {
+ InterfaceDefinition interfaceDefinition = new InterfaceDefinition();
+ interfaceDefinition.setType("tosca.interfaces.standard");
+ return interfaceDefinition;
+ }
+
+ private org.openecomp.sdc.be.model.Resource createResource() {
+ org.openecomp.sdc.be.model.Resource resource = new org.openecomp.sdc.be.model.Resource();
+ resource.setUniqueId(RESOURCE_ID);
+ resource.setName(RESOURCE_NAME);
+ resource.setDescription("My short description");
+ resource.setInterfaces(createMockInterfaceDefinition());
+ return resource;
+ }
+
+ private Service createService() {
+ Service service = new Service();
+ service.setUniqueId(SERVICE_ID);
+ service.setName(SERVICE_NAME);
+ service.setDescription("My short description");
+ service.setInterfaces(createMockInterfaceDefinition());
+ return service;
+ }
+
+ private Map<String, InterfaceDefinition> createMockInterfaceDefinition() {
+ Map<String, Operation> operationMap = createMockOperationMap();
+ Map<String, InterfaceDefinition> interfaceDefinitionMap = new HashMap<>();
+ interfaceDefinitionMap.put("int1", createInterface("int1", "Interface 1", "lifecycle", "tosca", operationMap));
+ return interfaceDefinitionMap;
+ }
+
+ private InterfaceDefinition createInterface(String uniqueId, String description, String type,
+ String toscaResourceName, Map<String, Operation> op) {
+ InterfaceDefinition id = new InterfaceDefinition();
+ id.setType(type);
+ id.setDescription(description);
+ id.setUniqueId(uniqueId);
+ id.setToscaResourceName(toscaResourceName);
+ id.setOperationsMap(op);
+ return id;
}
@After
diff --git a/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtilsTest.java b/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtilsTest.java
deleted file mode 100644
index fbf01bc91d..0000000000
--- a/catalog-model/src/test/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtilsTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.openecomp.sdc.be.model.jsontitan.utils;
-
-import org.junit.Test;
-import org.openecomp.sdc.be.model.InterfaceDefinition;
-import org.openecomp.sdc.be.model.Operation;
-import org.openecomp.sdc.be.model.Resource;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-public class InterfaceUtilsTest {
-
- private InterfaceUtils createTestSubject() {
- return new InterfaceUtils();
- }
-
-
- @Test
- public void testGetInterfaceDefinitionFromToscaName() throws Exception {
- Collection<InterfaceDefinition> interfaces = null;
- String resourceName = "";
- Optional<InterfaceDefinition> result;
-
- // default test
- result = InterfaceUtils.getInterfaceDefinitionFromToscaName(interfaces, resourceName);
- }
-
-
- @Test
- public void testGetInterfaceDefinitionListFromToscaName() throws Exception {
- Collection<InterfaceDefinition> interfaces = null;
- String resourceName = "";
- Collection<InterfaceDefinition> result;
-
- // default test
- result = InterfaceUtils.getInterfaceDefinitionListFromToscaName(interfaces, resourceName);
- }
-
-
- @Test
- public void testCreateInterfaceToscaResourceName() throws Exception {
- String resourceName = "";
- String result;
-
- // default test
- result = InterfaceUtils.createInterfaceToscaResourceName(resourceName);
- }
-} \ No newline at end of file