Support setting interfaces on instances
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / jsonjanusgraph / operations / NodeTemplateOperation.java
index 416c701..0b29675 100644 (file)
@@ -17,6 +17,7 @@
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.openecomp.sdc.be.model.jsonjanusgraph.operations;
 
 import fj.data.Either;
@@ -37,7 +38,7 @@ import java.util.function.BiPredicate;
 import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.tinkerpop.gremlin.structure.Direction;
@@ -134,7 +135,8 @@ public class NodeTemplateOperation extends BaseOperation {
     static final String HEAT_VF_ENV_NAME = "VfHeatEnv";
     static final String HEAT_ENV_SUFFIX = "env";
     private static final String FAILED_TO_FETCH_CONTAINER_VERTEX_ERROR = "Failed to fetch container vertex {} error {}";
-    private static final String FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE = "Failed to update topology template {} with new component instance {}. ";
+    private static final String FAILED_TO_UPDATE_TOPOLOGY_TEMPLATE_WITH_NEW_COMPONENT_INSTANCE =
+        "Failed to update topology template {} with new component instance {}. ";
     private static final String ARTIFACT_PLACEHOLDER_TYPE = "type";
     private static final String ARTIFACT_PLACEHOLDER_DISPLAY_NAME = "displayName";
     private static final Object ARTIFACT_PLACEHOLDER_DESCRIPTION = "description";
@@ -154,7 +156,7 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     public static String createCapPropertyKey(String key, String instanceId) {
-        StringBuffer sb = new StringBuffer(instanceId);
+        StringBuilder sb = new StringBuilder(instanceId);
         sb.append(ModelConverter.CAP_PROP_DELIM).append(instanceId).append(ModelConverter.CAP_PROP_DELIM).append(key);
         return sb.toString();
     }
@@ -189,7 +191,7 @@ public class NodeTemplateOperation extends BaseOperation {
             componentInstanceData = buildComponentInstanceDataDefinition(componentInstance, container.getUniqueId(),
                 newInstanceNameRes.left().value(), true, originToscaElement);
             addComponentInstanceRes = addComponentInstanceToTopologyTemplate(container, originToscaElement, componentInstanceData,
-                metadataVertex.left().value(), allowDeleted, user);
+                metadataVertex.left().value(), allowDeleted);
             if (addComponentInstanceRes.isRight()) {
                 StorageOperationStatus status = addComponentInstanceRes.right().value();
                 if (status == StorageOperationStatus.NOT_FOUND) {
@@ -240,7 +242,7 @@ public class NodeTemplateOperation extends BaseOperation {
                 : calcCap.get(componentInstanceData.getUniqueId());
         /******** capability ****************************/
         StorageOperationStatus status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(),
-            EdgeLabelEnum.CALCULATED_CAPABILITIES, VertexTypeEnum.CALCULATED_CAPABILITIES, componentInstanceData.getUniqueId());
+            EdgeLabelEnum.CALCULATED_CAPABILITIES, componentInstanceData.getUniqueId());
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ",
                 componentInstanceData.getUniqueId(), updatedContainer.getUniqueId(), status);
@@ -263,7 +265,7 @@ public class NodeTemplateOperation extends BaseOperation {
 
             /******** capability property ****************************/
             status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
-                VertexTypeEnum.CALCULATED_CAP_PROPERTIES, componentInstanceData.getUniqueId());
+                componentInstanceData.getUniqueId());
             if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
                 CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
                     "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ",
@@ -302,7 +304,7 @@ public class NodeTemplateOperation extends BaseOperation {
                 calcReg == null || !calcReg.containsKey(componentInstanceData.getUniqueId()) ? new MapListRequirementDataDefinition()
                     : calcReg.get(componentInstanceData.getUniqueId());
             status = deleteToscaDataDeepElementsBlockOfToscaElement(updatedContainer.getUniqueId(), EdgeLabelEnum.CALCULATED_REQUIREMENTS,
-                VertexTypeEnum.CALCULATED_REQUIREMENTS, componentInstanceData.getUniqueId());
+                componentInstanceData.getUniqueId());
             if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
                 CommonUtility
                     .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated Requirements for instance {} in container {}. error {] ",
@@ -372,7 +374,7 @@ public class NodeTemplateOperation extends BaseOperation {
                 .getVertexById(updatedContainer.getUniqueId(), JsonParseFlagEnum.NoParse);
             if (getToscaElementRes.isLeft()) {
                 deleteToscaDataDeepElementsBlockToToscaElement(getToscaElementRes.left().value(), EdgeLabelEnum.INST_PROPERTIES,
-                    VertexTypeEnum.INST_PROPERTIES, componentInstance.getUniqueId());
+                    componentInstance.getUniqueId());
             }
             StorageOperationStatus status = addToscaDataDeepElementsBlockToToscaElement(updatedContainer.getUniqueId(),
                 EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES, instProperties,
@@ -439,8 +441,7 @@ public class NodeTemplateOperation extends BaseOperation {
 
     public Either<TopologyTemplate, StorageOperationStatus> addComponentInstanceToTopologyTemplate(
         TopologyTemplate container, ToscaElement originToscaElement,
-        ComponentInstanceDataDefinition componentInstance, GraphVertex metadataVertex, boolean allowDeleted,
-        User user) {
+        ComponentInstanceDataDefinition componentInstance, GraphVertex metadataVertex, boolean allowDeleted) {
 
         Either<TopologyTemplate, StorageOperationStatus> result = null;
         Either<ToscaElement, StorageOperationStatus> updateContainerComponentRes = null;
@@ -670,31 +671,35 @@ public class NodeTemplateOperation extends BaseOperation {
         if (composition != null) {
             Map<String, RelationshipInstDataDefinition> relations = composition.getRelations();
             if (MapUtils.isNotEmpty(relations)) {
-                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(
-                    containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+                    fetchContainerCalculatedCapability(
+                        containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
                 if (capResult.isRight()) {
                     return capResult.right().value();
 
                 }
                 Map<String, MapListCapabilityDataDefinition> calculatedCapabilty = capResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(
-                    containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+                Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+                    fetchContainerCalculatedCapability(
+                        containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
                 if (capFullResult.isRight()) {
                     return capFullResult.right().value();
 
                 }
                 Map<String, MapListCapabilityDataDefinition> fullFilledCapabilty = capFullResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(
-                    containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+                    fetchContainerCalculatedRequirement(
+                        containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
                 if (reqResult.isRight()) {
                     return reqResult.right().value();
                 }
                 Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
 
-                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(
-                    containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+                Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+                    fetchContainerCalculatedRequirement(
+                        containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
                 if (reqResult.isRight()) {
                     return reqResult.right().value();
                 }
@@ -728,14 +733,14 @@ public class NodeTemplateOperation extends BaseOperation {
 
     private StorageOperationStatus deleteComponentInstanceToscaDataFromContainerComponent(GraphVertex containerV, String componentInstanceId) {
         StorageOperationStatus status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES,
-            VertexTypeEnum.CALCULATED_CAPABILITIES, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated capabilty  for instance {} in container {}. error {] ",
                 componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_CAP_PROPERTIES,
-            VertexTypeEnum.CALCULATED_CAP_PROPERTIES, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
                 "Failed to remove calculated capabilty properties for instance {} in container {}. error {] ", componentInstanceId,
@@ -743,7 +748,7 @@ public class NodeTemplateOperation extends BaseOperation {
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS,
-            VertexTypeEnum.CALCULATED_REQUIREMENTS, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
                 .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove calculated requirement  for instance {} in container {}. error {] ",
@@ -751,7 +756,7 @@ public class NodeTemplateOperation extends BaseOperation {
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES,
-            VertexTypeEnum.FULLFILLED_CAPABILITIES, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
                 .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled capabilities  for instance {} in container {}. error {] ",
@@ -759,35 +764,35 @@ public class NodeTemplateOperation extends BaseOperation {
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS,
-            VertexTypeEnum.FULLFILLED_REQUIREMENTS, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
                 .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove fullfilled requirement  for instance {} in container {}. error {] ",
                     componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_ATTRIBUTES, VertexTypeEnum.INST_ATTRIBUTES,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_ATTRIBUTES,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove attributes for instance {} in container {}. error {] ",
                 componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_PROPERTIES, VertexTypeEnum.INST_PROPERTIES,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_PROPERTIES,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove properties for instance {} in container {}. error {] ",
                 componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INPUTS, VertexTypeEnum.INST_INPUTS,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INPUTS,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance inputs  for instance {} in container {}. error {] ",
                 componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_GROUPS, VertexTypeEnum.INST_GROUPS,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_GROUPS,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
@@ -796,21 +801,21 @@ public class NodeTemplateOperation extends BaseOperation {
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_DEPLOYMENT_ARTIFACTS,
-            VertexTypeEnum.INST_DEPLOYMENT_ARTIFACTS, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
                 .addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance deployment artifacts  for instance {} in container {}. error {] ",
                     componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INSTANCE_ARTIFACTS, VertexTypeEnum.INSTANCE_ARTIFACTS,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INSTANCE_ARTIFACTS,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to remove instance artifacts  for instance {} in container {}. error {] ",
                 componentInstanceId, containerV.getUniqueId(), status);
             return status;
         }
-        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.EXTERNAL_REFS, VertexTypeEnum.EXTERNAL_REF,
+        status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.EXTERNAL_REFS,
             componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility
@@ -819,7 +824,7 @@ public class NodeTemplateOperation extends BaseOperation {
             return status;
         }
         status = deleteToscaDataDeepElementsBlockToToscaElement(containerV, EdgeLabelEnum.INST_INTERFACES,
-            VertexTypeEnum.INST_INTERFACES, componentInstanceId);
+            componentInstanceId);
         if (status != StorageOperationStatus.OK && status != StorageOperationStatus.NOT_FOUND) {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
                 "Failed to remove service instance interfaces  for instance {} in container {}. " +
@@ -940,9 +945,7 @@ public class NodeTemplateOperation extends BaseOperation {
                 req.addToPath(componentInstance.getUniqueId());
                 log.debug("enter populateRequirement,get init Requirements OwnerId:{},get componentInstance UniqueId:{}",
                     req.getOwnerId(), componentInstance.getUniqueId());
-                if (req.getOwnerId() == null || req.getOwnerId().isEmpty()) {
-                    req.setOwnerId(componentInstance.getUniqueId());
-                }
+                req.setOwnerId(componentInstance.getUniqueId());
                 log.debug("enter populateRequirement,get init Requirements OwnerName:{}", req.getOwnerName());
                 if (req.getOwnerName() == null || req.getOwnerName().isEmpty()) {
                     req.setOwnerName(componentInstance.getName());
@@ -1110,6 +1113,7 @@ public class NodeTemplateOperation extends BaseOperation {
     private void bindCapabilityDefinition(final CapabilityDataDefinition fromCapabilityDefinition,
                                           final CapabilityDataDefinition capabilityDefinitionToUpdate) {
         capabilityDefinitionToUpdate.setExternal(fromCapabilityDefinition.isExternal());
+        capabilityDefinitionToUpdate.setExternalName(fromCapabilityDefinition.getExternalName());
     }
 
     private Optional<GraphVertex> findComponentVertex(final String componentId) {
@@ -1190,7 +1194,10 @@ public class NodeTemplateOperation extends BaseOperation {
 
         listRequirementDataDefinition.getListToscaDataDefinition().stream()
             .filter(e -> requirementDataDefinition.getOwnerId().equals(e.getOwnerId()) && requirementDataDefinition.getName().equals(e.getName()))
-            .forEach(r -> r.setExternal(requirementDataDefinition.isExternal()));
+            .forEach(r -> {
+                r.setExternal(requirementDataDefinition.isExternal());
+                r.setExternalName(requirementDataDefinition.getExternalName());
+            });
 
         return updateCalculatedReqOnGraph(componentId, containerV, existingReqs);
     }
@@ -1473,7 +1480,7 @@ public class NodeTemplateOperation extends BaseOperation {
                 Optional<GroupDefinition> groupOptional = groups.stream().filter(g -> g.getUniqueId().equals(groupArtifacts.getKey())).findFirst();
                 if (groupOptional.isPresent()) {
                     GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition((GroupDataDefinition) groupOptional.get(),
-                        (ComponentInstanceDataDefinition) componentInstance, null);
+                        (ComponentInstanceDataDefinition) componentInstance);
                     groupInstance.setGroupInstanceArtifacts(
                         groupArtifacts.getValue().stream().map(ArtifactDataDefinition::getUniqueId).collect(Collectors.toList()));
                     groupInstance.setGroupInstanceArtifactsUuid(
@@ -1496,7 +1503,7 @@ public class NodeTemplateOperation extends BaseOperation {
                                                                                  String instanceNewName, boolean generateUid,
                                                                                  ToscaElement originToscaElement) {
         String ciOriginComponentUid = resourceInstance.getComponentUid();
-        if (!ValidationUtils.validateStringNotEmpty(resourceInstance.getCustomizationUUID())) {
+        if (StringUtils.isEmpty(resourceInstance.getCustomizationUUID())) {
             resourceInstance.setCustomizationUUID(generateCustomizationUUID());
         }
         ComponentInstanceDataDefinition dataDefinition = new ComponentInstanceDataDefinition(resourceInstance);
@@ -1521,7 +1528,7 @@ public class NodeTemplateOperation extends BaseOperation {
         dataDefinition.setIcon(resourceInstance.getIcon());
         if (generateUid) {
             dataDefinition.setUniqueId(
-                UniqueIdBuilder.buildResourceInstanceUniuqeId(containerComponentId, ciOriginComponentUid, dataDefinition.getNormalizedName()));
+                UniqueIdBuilder.buildResourceInstanceUniqueId(containerComponentId, ciOriginComponentUid, dataDefinition.getNormalizedName()));
             resourceInstance.setUniqueId(dataDefinition.getUniqueId());
         }
         if (StringUtils.isEmpty(dataDefinition.getComponentVersion()) && originToscaElement != null) {
@@ -1558,14 +1565,18 @@ public class NodeTemplateOperation extends BaseOperation {
     }
 
     private String buildComponentInstanceName(String instanceSuffixNumber, String instanceName) {
-        return instanceName + " " + (instanceSuffixNumber == null ? 0 : instanceSuffixNumber);
+        String delimiter = ConfigurationManager.getConfigurationManager().getConfiguration().getComponentInstanceCounterDelimiter();
+        if (delimiter == null) {
+            delimiter = " ";
+        }
+        return instanceName + delimiter + (instanceSuffixNumber == null ? 0 : instanceSuffixNumber);
     }
 
-    public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(Component component, String componentId,
+    public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId,
                                                                                                   RequirementCapabilityRelDef relation) {
         List<RequirementCapabilityRelDef> relations = new ArrayList<>();
         relations.add(relation);
-        Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances = associateResourceInstances(component,
+        Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances = associateResourceInstances(
             componentId, relations);
         if (associateResourceInstances.isRight()) {
             return Either.right(associateResourceInstances.right().value());
@@ -1575,7 +1586,7 @@ public class NodeTemplateOperation extends BaseOperation {
 
     @SuppressWarnings({"unchecked"})
     public <T extends ToscaDataDefinition> Either<List<RequirementCapabilityRelDef>, StorageOperationStatus> associateResourceInstances(
-        Component component, String componentId, List<RequirementCapabilityRelDef> relations) {
+        String componentId, List<RequirementCapabilityRelDef> relations) {
         Either<GraphVertex, JanusGraphOperationStatus> containerVEither = janusGraphDao.getVertexById(componentId, JsonParseFlagEnum.ParseAll);
         if (containerVEither.isRight()) {
             JanusGraphOperationStatus error = containerVEither.right().value();
@@ -1583,26 +1594,30 @@ public class NodeTemplateOperation extends BaseOperation {
             return Either.right(DaoStatusConverter.convertJanusGraphStatusToStorageStatus(error));
         }
         GraphVertex containerV = containerVEither.left().value();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(
-            containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
         }
         Map<String, MapListCapabilityDataDefinition> calculatedCapabilty = capResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(
-            containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
         }
         Map<String, MapListCapabilityDataDefinition> fullFilledCapabilty = capFullResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(
-            containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(
-            containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
@@ -1717,9 +1732,9 @@ public class NodeTemplateOperation extends BaseOperation {
         final OperationDataDefinition operationDataDefinition = new OperationDataDefinition();
         operationDataDefinition.setName(operation.getOperationType());
         operationDataDefinition.setUniqueId(UUID.randomUUID().toString());
-        final ArtifactDataDefinition implementation = new ArtifactDataDefinition();
-        implementation.setArtifactName(operation.getImplementation());
-        operationDataDefinition.setImplementation(implementation);
+        final ArtifactDataDefinition artifactDataDefinition = new ArtifactDataDefinition();
+        artifactDataDefinition.setArtifactName((String) operation.getImplementation());
+        operationDataDefinition.setImplementation(artifactDataDefinition);
         if (CollectionUtils.isNotEmpty(operation.getInputs())) {
             final ListDataDefinition<OperationInputDefinition> inputs = new ListDataDefinition<>();
             operation.getInputs().forEach(input -> {
@@ -1818,26 +1833,30 @@ public class NodeTemplateOperation extends BaseOperation {
         }
         Map<String, RelationshipInstDataDefinition> relations = compositionDataDefinition.getRelations();
         List<CapabilityRequirementRelationship> relationPairList = requirementDef.getRelationships();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult = fetchContainerCalculatedCapability(
-            containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.CALCULATED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
         }
         Map<String, MapListCapabilityDataDefinition> calculatedCapability = capResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult = fetchContainerCalculatedCapability(
-            containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> capFullResult =
+            fetchContainerCalculatedCapability(
+                containerV, EdgeLabelEnum.FULLFILLED_CAPABILITIES);
         if (capResult.isRight()) {
             return Either.right(capResult.right().value());
         }
         Map<String, MapListCapabilityDataDefinition> fulfilledCapability = capFullResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult = fetchContainerCalculatedRequirement(
-            containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.CALCULATED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
         Map<String, MapListRequirementDataDefinition> calculatedRequirement = reqResult.left().value().getRight();
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult = fetchContainerCalculatedRequirement(
-            containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> reqFullResult =
+            fetchContainerCalculatedRequirement(
+                containerV, EdgeLabelEnum.FULLFILLED_REQUIREMENTS);
         if (reqResult.isRight()) {
             return Either.right(reqResult.right().value());
         }
@@ -2232,8 +2251,9 @@ public class NodeTemplateOperation extends BaseOperation {
 
     private Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedCapability(
         GraphVertex containerV, EdgeLabelEnum capLabel) {
-        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, JanusGraphOperationStatus> calculatedCapabiltyEither = getDataAndVertexFromGraph(
-            containerV, capLabel);
+        Either<Pair<GraphVertex, Map<String, MapListCapabilityDataDefinition>>, JanusGraphOperationStatus> calculatedCapabiltyEither =
+            getDataAndVertexFromGraph(
+                containerV, capLabel);
         if (calculatedCapabiltyEither.isRight()) {
             JanusGraphOperationStatus error = calculatedCapabiltyEither.right().value();
             CommonUtility
@@ -2246,8 +2266,9 @@ public class NodeTemplateOperation extends BaseOperation {
 
     private Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, StorageOperationStatus> fetchContainerCalculatedRequirement(
         GraphVertex containerV, EdgeLabelEnum reqLabel) {
-        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, JanusGraphOperationStatus> calculatedRequirementEither = getDataAndVertexFromGraph(
-            containerV, reqLabel);
+        Either<Pair<GraphVertex, Map<String, MapListRequirementDataDefinition>>, JanusGraphOperationStatus> calculatedRequirementEither =
+            getDataAndVertexFromGraph(
+                containerV, reqLabel);
         if (calculatedRequirementEither.isRight()) {
             JanusGraphOperationStatus error = calculatedRequirementEither.right().value();
             CommonUtility
@@ -2404,7 +2425,7 @@ public class NodeTemplateOperation extends BaseOperation {
     private RelationshipInstDataDefinition buildRelationshipInstData(String fromResInstanceUid, String toInstId, RelationshipInfo relationPair,
                                                                      boolean originUI) {
         RelationshipInstDataDefinition relationshipInstData = new RelationshipInstDataDefinition();
-        relationshipInstData.setUniqueId(UniqueIdBuilder.buildRelationsipInstInstanceUid(fromResInstanceUid, toInstId));
+        relationshipInstData.setUniqueId(UniqueIdBuilder.buildRelationshipInstInstanceUid());
         relationshipInstData.setType(relationPair.getRelationship().getType());
         Long creationDate = System.currentTimeMillis();
         relationshipInstData.setCreationTime(creationDate);