merge 1710 to 1.1.0 19/20519/1
authorYuli Shlosberg <ys9693@att.com>
Wed, 25 Oct 2017 08:52:17 +0000 (11:52 +0300)
committerYuli Shlosberg <ys9693@att.com>
Wed, 25 Oct 2017 08:52:17 +0000 (11:52 +0300)
Change-Id: I75bec14b00e780b2e1c819237139b02453c4a359
Issue-Id: SDC-522
Signed-off-by: Yuli Shlosberg <ys9693@att.com>
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogicTest.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/BaseOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/NodeTemplateOperation.java
catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/ToscaElementLifecycleOperation.java

index 74bb55b..1ee3bc6 100644 (file)
@@ -3648,12 +3648,13 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                        Either<ESArtifactData, CassandraOperationStatus> artifactfromES;
                        ESArtifactData esArtifactData;
                        if (esArtifactId != null && !esArtifactId.isEmpty() && artifactDefinition.getPayloadData() == null) {
+                               log.debug("Try to fetch artifact from cassandra with id : {}", esArtifactId);
                                artifactfromES = artifactCassandraDao.getArtifact(esArtifactId);
                                if (artifactfromES.isRight()) {
                                        CassandraOperationStatus resourceUploadStatus = artifactfromES.right().value();
                                        StorageOperationStatus storageResponse = DaoStatusConverter.convertCassandraStatusToStorageStatus(resourceUploadStatus);
                                        ActionStatus actionStatus = componentsUtils.convertFromStorageResponse(storageResponse);
-                                       log.debug("Error when getting artifact from ES, error: {}", actionStatus.name());
+                                       log.debug("Error when getting artifact from ES, error: {} esid : {}", actionStatus.name(), esArtifactId);
                                        return Either.right(componentsUtils.getResponseFormatByArtifactId(actionStatus, artifactDefinition.getArtifactDisplayName()));
                                }
                                esArtifactData = artifactfromES.left().value();
index b0feffd..08d377c 100644 (file)
@@ -917,6 +917,9 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                                vfcToscaNames.put(nodeType.getKey(), toscaResourceName);
                        }
                }
+               for(NodeTypeInfo cvfc : nodeTypesInfo.values()){
+                       vfcToscaNames.put(cvfc.getType(), buildNestedToscaResourceName(ResourceTypeEnum.CVFC.name(), vfResourceName, cvfc.getType()));
+               }
                return vfcToscaNames;
        }
 
@@ -1461,7 +1464,8 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                String nameWithouNamespacePrefix = nodeName.substring(Constants.USER_DEFINED_RESOURCE_NAMESPACE_PREFIX.length());
                String[] findTypes = nameWithouNamespacePrefix.split("\\.");
                String resourceType = findTypes[0];
-               return resourceVfName + "-" + nameWithouNamespacePrefix.substring(resourceType.length() + 1) + "Cvfc";
+               String resourceName = resourceVfName + "-" + nameWithouNamespacePrefix.substring(resourceType.length() + 1);
+               return  addCvfcSuffixToResourceName(resourceName);
        }
 
        private Either<Resource, ResponseFormat> createResourceAndRIsFromYaml(String yamlName, Resource resource, ParsedToscaYamlInfo parsedToscaYamlInfo, AuditingActionEnum actionEnum, boolean isNormative,
@@ -1987,6 +1991,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                        if (eitherCreateResult.isRight()) {
                                return Either.right(eitherCreateResult.right().value());
                        }
+                       resource = eitherCreateResult.left().value();
 
                        Either<ImmutablePair<String, String>, ResponseFormat> artifacsMetaCsarStatus = CsarValidationUtils.getArtifactsMeta(csarInfo.getCsar(), csarInfo.getCsarUUID(), componentsUtils);
                        if (artifacsMetaCsarStatus.isLeft()) {
@@ -2895,7 +2900,9 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                                }
                        }
                        if (resStatus == null) {
-                               resStatus = Either.left(resource);
+                               Either<Resource, StorageOperationStatus> toscaElement = toscaOperationFacade.getToscaElement(resource.getUniqueId());
+                               resStatus = toscaElement.bimap(resourceResponse -> resourceResponse,
+                                                                                          storageResponse -> componentsUtils.getResponseFormatByResource(componentsUtils.convertFromStorageResponse(storageResponse), resource));
                        }
                } catch (Exception e) {
                        resStatus = Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
@@ -6209,11 +6216,23 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
         *
         * return Either.left(true); }
         */
+       private boolean isResourceNameEquals(Resource currentResource, Resource updateInfoResource) {
+               String resourceNameUpdated = updateInfoResource.getName();
+               String resourceNameCurrent = currentResource.getName();
+               if (resourceNameCurrent.equals(resourceNameUpdated))
+                       return true;
+               // In case of CVFC type we should support the case of old VF with CVFC instances that were created without the "Cvfc" suffix
+               return (currentResource.getResourceType().equals(ResourceTypeEnum.CVFC)
+                               && resourceNameUpdated.equals(addCvfcSuffixToResourceName(resourceNameCurrent)));
+       }
+
+       private String addCvfcSuffixToResourceName(String resourceName) {
+               return resourceName+"Cvfc";
+       }
 
        private Either<Boolean, ResponseFormat> validateResourceName(Resource currentResource, Resource updateInfoResource, boolean hasBeenCertified) {
                String resourceNameUpdated = updateInfoResource.getName();
-               String resourceNameCurrent = currentResource.getName();
-               if (!resourceNameCurrent.equals(resourceNameUpdated)) {
+               if (!isResourceNameEquals(currentResource, updateInfoResource)) {
                        if (!hasBeenCertified) {
                                Either<Boolean, ResponseFormat> validateResourceNameResponse = validateComponentName(null, updateInfoResource, null);
                                if (validateResourceNameResponse.isRight()) {
@@ -6229,7 +6248,7 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic {
                                currentResource.setNormalizedName(ValidationUtils.normaliseComponentName(resourceNameUpdated));
                                currentResource.setSystemName(ValidationUtils.convertToSystemName(resourceNameUpdated));
 
-                       } else {
+                       } else if(currentResource.getResourceType() != ResourceTypeEnum.CVFC) {
                                log.info("Resource name: {}, cannot be updated once the resource has been certified once.", resourceNameUpdated);
                                ResponseFormat errorResponse = componentsUtils.getResponseFormat(ActionStatus.RESOURCE_NAME_CANNOT_BE_CHANGED);
                                return Either.right(errorResponse);
index a0cc347..fda1990 100644 (file)
@@ -146,7 +146,8 @@ public class CsarUtils {
                                                                                                                                        ImportUtils.Constants.USER_DEFINED_RESOURCE_NAMESPACE_PREFIX + 
                                                                                                                                        "([\\d\\w\\_\\-\\.\\s]+)" + DEL_PATTERN +
                                                                                                                                        "([\\d\\w\\_\\-\\.\\s]+)" + DEL_PATTERN + 
-                                                                                                                                       "([\\d\\w\\_\\-\\.\\s]+)" + DEL_PATTERN;
+                                                                                                                                       "([\\d\\w\\_\\-\\.\\s]+)" + DEL_PATTERN +
+                                                                                                                                       "([\\d\\w\\_\\-\\.\\s]+)";
 
        public static final String VF_NODE_TYPE_ARTIFACTS_PATH_PATTERN = ARTIFACTS + DEL_PATTERN+
        // Artifact Group (i.e Deployment/Informational)
index 0e27636..40986bf 100644 (file)
@@ -1655,17 +1655,15 @@ public class ResourceBusinessLogicTest {
                deploymentArtifactToUpdate.setArtifactName(deploymentArtifactToUpdateFileName);
                deploymentArtifactToUpdate.setArtifactType("SNMP_POLL");
                deploymentArtifactToUpdate.setPayload(oldPayloadData);
-               deploymentArtifactToUpdate
-                               .setArtifactChecksum(GeneralUtility.calculateMD5Base64EncodedByByteArray(oldPayloadData));
-
+               deploymentArtifactToUpdate.setArtifactChecksum(GeneralUtility.calculateMD5Base64EncodedByByteArray(oldPayloadData));
+               
                ArtifactDefinition deploymentArtifactToDelete = new ArtifactDefinition();
                deploymentArtifactToDelete.setMandatory(false);
                deploymentArtifactToDelete.setArtifactName(deploymentArtifactToDeleteFileName);
                deploymentArtifactToDelete.setArtifactType("SNMP_TRAP");
                deploymentArtifactToDelete.setPayload(oldPayloadData);
-               deploymentArtifactToDelete
-                               .setArtifactChecksum(GeneralUtility.calculateMD5Base64EncodedByByteArray(oldPayloadData));
-
+               deploymentArtifactToDelete.setArtifactChecksum(GeneralUtility.calculateMD5Base64EncodedByByteArray(oldPayloadData));
+               
                ArtifactDefinition deploymentArtifactToIgnore = new ArtifactDefinition();
 
                deploymentArtifacts.put(ValidationUtils.normalizeArtifactLabel(deploymentArtifactToUpdate.getArtifactName()),
index 1726c39..79360f6 100644 (file)
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.stream.Collectors;
 
@@ -44,6 +45,7 @@ import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
 import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
 import org.openecomp.sdc.be.dao.jsongraph.utils.IdBuilderUtils;
 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
+import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition;
@@ -1338,32 +1340,49 @@ public abstract class BaseOperation {
 //             return StorageOperationStatus.OK;
 //     }
        
-       protected GroupInstanceDataDefinition buildGroupInstanceDataDefinition(GroupDataDefinition group, ComponentInstanceDataDefinition componentInstance) {
-
-               String componentInstanceName = componentInstance.getName();
-               Long creationDate = System.currentTimeMillis();
-               GroupInstanceDataDefinition groupInstance = new GroupInstanceDataDefinition();
-               String groupUid = group.getUniqueId();
-
-               groupInstance.setGroupUid(groupUid);
-               groupInstance.setType(group.getType());
-               groupInstance.setCustomizationUUID(generateCustomizationUUID());
-               groupInstance.setCreationTime(creationDate);
-               groupInstance.setModificationTime(creationDate);
-               groupInstance.setName(buildGroupInstanceName(componentInstanceName, group.getName()));
-               groupInstance.setGroupName(group.getName());
-               groupInstance.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(groupInstance.getName()));
-               groupInstance.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentInstance.getUniqueId(), groupUid, groupInstance.getNormalizedName()));
-               groupInstance.setArtifacts(group.getArtifacts());
-               groupInstance.setArtifactsUuid(group.getArtifactsUuid());
-               groupInstance.setProperties(group.getProperties());
-               convertPropertiesToInstanceProperties(groupInstance.getProperties());
-               groupInstance.setInvariantUUID(group.getInvariantUUID());
-               groupInstance.setGroupUUID(group.getGroupUUID());
-               groupInstance.setVersion(group.getVersion());
-
-               return groupInstance;
-       }
+    protected GroupInstanceDataDefinition buildGroupInstanceDataDefinition(GroupDataDefinition group, ComponentInstanceDataDefinition componentInstance, Map<String, ArtifactDataDefinition> instDeplArtifMap) {
+
+        String componentInstanceName = componentInstance.getName();
+        Long creationDate = System.currentTimeMillis();
+        GroupInstanceDataDefinition groupInstance = new GroupInstanceDataDefinition();
+        String groupUid = group.getUniqueId();
+
+        groupInstance.setGroupUid(groupUid);
+        groupInstance.setType(group.getType());
+        groupInstance.setCustomizationUUID(generateCustomizationUUID());
+        groupInstance.setCreationTime(creationDate);
+        groupInstance.setModificationTime(creationDate);
+        groupInstance.setName(buildGroupInstanceName(componentInstanceName, group.getName()));
+        groupInstance.setGroupName(group.getName());
+        groupInstance.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(groupInstance.getName()));
+        groupInstance.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentInstance.getUniqueId(), groupUid, groupInstance.getNormalizedName()));
+        groupInstance.setArtifacts(group.getArtifacts());
+
+//        List<String> fixedArtifactsUuid;
+//        List<String> artifactsUuid = group.getArtifactsUuid();
+//        if (instDeplArtifMap != null) {
+//              fixedArtifactsUuid = new ArrayList<>();
+//              artifactsUuid.forEach(u -> {
+//                    Optional<ArtifactDataDefinition> findFirst = instDeplArtifMap.values().stream().filter(a -> u.equals(a.getUniqueId())).findFirst();
+//                    if (findFirst.isPresent()) {
+//                          fixedArtifactsUuid.add(findFirst.get().getArtifactUUID());
+//                    } else {
+//                          fixedArtifactsUuid.add(u);
+//                    }
+//              });
+//        } else {
+//              fixedArtifactsUuid = artifactsUuid;
+//        }
+        groupInstance.setArtifactsUuid(group.getArtifactsUuid());
+        groupInstance.setProperties(group.getProperties());
+        convertPropertiesToInstanceProperties(groupInstance.getProperties());
+        groupInstance.setInvariantUUID(group.getInvariantUUID());
+        groupInstance.setGroupUUID(group.getGroupUUID());
+        groupInstance.setVersion(group.getVersion());
+
+        return groupInstance;
+  }
+
        
        protected String buildGroupInstanceName(String instanceName, String groupName) {
                return ValidationUtils.normalizeComponentInstanceName(instanceName) + ".." + groupName;
index b642410..7ff42ae 100644 (file)
@@ -793,7 +793,7 @@ public class NodeTemplateOperation extends BaseOperation {
                        for (Map.Entry<String, List<ArtifactDefinition>> groupArtifacts : groupInstancesArtifacts.entrySet()) {
                                Optional<GroupDefinition> groupOptional = groups.stream().filter(g -> g.getUniqueId().equals(groupArtifacts.getKey())).findFirst();
                                if (groupOptional.isPresent()) {
-                                       GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition((GroupDataDefinition)groupOptional.get(), (ComponentInstanceDataDefinition)componentInstance);
+                                       GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition((GroupDataDefinition) groupOptional.get(), (ComponentInstanceDataDefinition) componentInstance, null);
                                        groupInstance.setGroupInstanceArtifacts(groupArtifacts.getValue().stream().map(a -> a.getUniqueId()).collect(Collectors.toList()));
                                        groupInstance.setGroupInstanceArtifactsUuid(groupArtifacts.getValue().stream().map(a -> a.getArtifactUUID()).collect(Collectors.toList()));
                                        groupInstanceToCreate.put(groupInstance.getName(), groupInstance);
index 51d1225..f34975b 100644 (file)
@@ -1120,7 +1120,7 @@ public class ToscaElementLifecycleOperation extends BaseOperation {
                                        Map<String, GroupInstanceDataDefinition> groupInstanceToCreate = new HashMap<>();
                                        for(GroupDataDefinition group:filteredGroups){
                                                CommonUtility.addRecordToLog(logger, LogLevelEnum.DEBUG, "create new groupInstance  {} ", group.getName());
-                                               GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition(group, vfInst);
+                                               GroupInstanceDataDefinition groupInstance = buildGroupInstanceDataDefinition(group, vfInst, instDeplArtifMap);
                                                List<String> artifactsUid = new ArrayList<>();
                                                List<String> artifactsId = new ArrayList<>();
                                                for (ArtifactDataDefinition artifact : instDeplArtifMap.values()) {