From 61070c9c6b665fdea79b3ccdfeafc3a6b50d262e Mon Sep 17 00:00:00 2001 From: Avi Ziv Date: Wed, 26 Jul 2017 17:37:57 +0300 Subject: [SDC] Full OnBoard health-check and NFoD support Change-Id: I606f8a52c7e6d2bd5558f824957d890e552c5423 Signed-off-by: Avi Ziv --- .../pom.xml.versionsBackup | 76 ---- .../pom.xml.versionsBackup | 36 -- .../openecomp-sdc-healthcheck-manager/pom.xml | 2 +- .../pom.xml.versionsBackup | 78 ---- .../pom.xml.versionsBackup | 77 ---- .../impl/VendorLicenseManagerImpl.java | 106 +++--- .../sdc/vendorlicense/EntitlementPoolTest.java | 6 - .../sdc/vendorlicense/LicenseKeyGroupTest.java | 199 +++++++++- .../vendorlicense/VendorLicenseFacadeImplTest.java | 144 ++++--- .../VSPPackage.zip | Bin 33617 -> 0 bytes .../pom.xml.versionsBackup | 159 -------- .../errors/ComputeErrorBuilder.java | 25 ++ .../errors/DeploymentFlavorErrorBuilder.java | 10 + .../errors/ImageErrorBuilder.java | 27 +- .../errors/NicErrorBuilder.java | 27 ++ .../impl/ComputeManagerImpl.java | 47 ++- .../impl/DeploymentFlavorManagerImpl.java | 27 +- .../impl/ImageManagerImpl.java | 35 +- .../impl/ManualVspToscaManagerImpl.java | 22 +- .../vendorsoftwareproduct/impl/NicManagerImpl.java | 35 +- .../OrchestrationTemplateCandidateManagerImpl.java | 38 +- .../impl/VendorSoftwareProductManagerImpl.java | 21 ++ .../utils/ManualVspDataCollectionService.java | 418 --------------------- .../impl/ComputeManagerImplTest.java | 54 ++- .../impl/DeplomentFlavorManagerImplTest.java | 68 +++- .../impl/ImageManagerImplTest.java | 59 ++- .../impl/ManualVspToscaManagerImplTest.java | 156 +++++--- .../impl/NicManagerImplTest.java | 61 ++- openecomp-be/backend/pom.xml.versionsBackup | 26 -- 29 files changed, 933 insertions(+), 1106 deletions(-) delete mode 100644 openecomp-be/backend/openecomp-sdc-action-manager/pom.xml.versionsBackup delete mode 100644 openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml.versionsBackup delete mode 100644 openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml.versionsBackup delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-license-manager/pom.xml.versionsBackup delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/VSPPackage.zip delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml.versionsBackup create mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ComputeErrorBuilder.java create mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/NicErrorBuilder.java delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/utils/ManualVspDataCollectionService.java delete mode 100644 openecomp-be/backend/pom.xml.versionsBackup (limited to 'openecomp-be/backend') diff --git a/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml.versionsBackup b/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml.versionsBackup deleted file mode 100644 index 21cfd19b02..0000000000 --- a/openecomp-be/backend/openecomp-sdc-action-manager/pom.xml.versionsBackup +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - openecomp-sdc-action-manager - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-utilities-lib - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-validation-core - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-nosqldb-core - 1.0-SNAPSHOT - - - org.testng - testng - 6.9.10 - test - - - junit - junit - RELEASE - test - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.7.4 - - - org.codehaus.woodstox - woodstox-core-asl - 4.4.1 - - - org.openecomp.sdc - openecomp-sdc-action-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-versioning-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-logging-api - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-logging-core - 1.0-SNAPSHOT - - - - - org.openecomp.sdc - backend - 1.0-SNAPSHOT - - - - \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml.versionsBackup b/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml.versionsBackup deleted file mode 100644 index a9cc7a32f6..0000000000 --- a/openecomp-be/backend/openecomp-sdc-application-config-manager/pom.xml.versionsBackup +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - org.openecomp.sdc - openecomp-sdc-application-config-manager - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-config-lib - 1.0-SNAPSHOT - - - org.testng - testng - 6.9.10 - test - - - org.openecomp.sdc - openecomp-sdc-logging-core - 1.0-SNAPSHOT - - - - - org.openecomp.sdc - backend - 1.0-SNAPSHOT - - - - \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-healthcheck-manager/pom.xml b/openecomp-be/backend/openecomp-sdc-healthcheck-manager/pom.xml index ea105b1f90..359d940e52 100644 --- a/openecomp-be/backend/openecomp-sdc-healthcheck-manager/pom.xml +++ b/openecomp-be/backend/openecomp-sdc-healthcheck-manager/pom.xml @@ -80,4 +80,4 @@ - + \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml.versionsBackup b/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml.versionsBackup deleted file mode 100644 index 4d678ad77d..0000000000 --- a/openecomp-be/backend/openecomp-sdc-validation-manager/pom.xml.versionsBackup +++ /dev/null @@ -1,78 +0,0 @@ - - - 4.0.0 - - openecomp-sdc-validation-manager - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-utilities-lib - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-heat-lib - ${project.version} - - - org.testng - testng - 6.9.10 - test - - - junit - junit - RELEASE - test - - - - - org.openecomp.sdc - openecomp-sdc-translator-core - 1.0-SNAPSHOT - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.7.4 - - - org.codehaus.woodstox - woodstox-core-asl - 4.4.1 - - - org.openecomp.sdc - openecomp-sdc-vendor-license-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-validation-api - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-common-lib - 1.0-SNAPSHOT - - - - - - org.openecomp.sdc - backend - 1.0-SNAPSHOT - - - - \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/pom.xml.versionsBackup b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/pom.xml.versionsBackup deleted file mode 100644 index 85b34a187e..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/pom.xml.versionsBackup +++ /dev/null @@ -1,77 +0,0 @@ - - 4.0.0 - - openecomp-sdc-vendor-license-manager - openecomp-sdc-vendor-license-manager - - - backend - org.openecomp.sdc - 1.0-SNAPSHOT - - - - - org.openecomp.sdc - openecomp-sdc-vendor-license-core - ${project.version} - - - org.mockito - mockito-all - test - 1.10.19 - - - org.testng - testng - test - 6.8.5 - - - snakeyaml - org.yaml - - - - - junit - junit - test - 4.11 - - - javax.el - javax.el-api - ${javax.el-api.version} - - - org.glassfish.web - javax.el - 2.2.4 - - - org.codehaus.woodstox - woodstox-core-asl - 4.4.1 - - - org.openecomp.sdc - openecomp-sdc-vendor-software-product-manager - 1.0-SNAPSHOT - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.7.4 - - - - commons-io - commons-io - ${commons.io.version} - - - - \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java index 622ff02501..b570170985 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/main/java/org/openecomp/sdc/vendorlicense/impl/VendorLicenseManagerImpl.java @@ -365,9 +365,7 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { String user) { mdcDataDebugMessage.debugEntryMessage("VLM id", vlmId); mdcDataDebugMessage.debugExitMessage("VLM id", vlmId); - return featureGroupDao.list(new FeatureGroupEntity(vlmId, VersioningUtil - .resolveVersion(version, getVersionInfo(vlmId, VersionableEntityAction.Read, user), user), - null)); + return vendorLicenseFacade.listFeatureGroups(vlmId, version, user); } @Override @@ -487,15 +485,6 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { .debugEntryMessage("VLM id", entitlementPool.getVendorLicenseModelId()); mdcDataDebugMessage .debugExitMessage("VLM id", entitlementPool.getVendorLicenseModelId()); - validateCreateDate(entitlementPool); - return vendorLicenseFacade.createEntitlementPool(entitlementPool, user); - } - - private void validateCreateDate(EntitlementPoolEntity entitlementPool){ - mdcDataDebugMessage.debugEntryMessage("Start date and end date", entitlementPool.getStartDate - ()+" "+entitlementPool.getExpiryDate()); - - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" @@ -504,40 +493,49 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" : null) : null); - if(entitlementPool.getStartDate() != null && entitlementPool.getExpiryDate() != null) { - if (LocalDate.parse(entitlementPool.getStartDate(), formatter).atStartOfDay().isBefore - (LocalDate.now().atStartOfDay()) || - LocalDate.parse(entitlementPool.getExpiryDate(), formatter).atStartOfDay() - .isEqual(LocalDate.now().atStartOfDay()) || - LocalDate.parse(entitlementPool.getExpiryDate(), formatter) - .isBefore(LocalDate.parse(entitlementPool.getStartDate(), formatter))) { + validateCreateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(), + entitlementPool.getVendorLicenseModelId()); + return vendorLicenseFacade.createEntitlementPool(entitlementPool, user); + } + + private void validateCreateDate(String startDate, String expiryDate, String vendorLicenseModelId){ + mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate + +" "+expiryDate); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); + + if(startDate != null && expiryDate != null) { + if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore + (LocalDate.now().atStartOfDay()) || LocalDate.parse(expiryDate, formatter).atStartOfDay() + .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || LocalDate + .parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(entitlementPool.getVendorLicenseModelId()) + new InvalidDateErrorBuilder(vendorLicenseModelId) .build()); } } - if(entitlementPool.getStartDate() != null && entitlementPool.getExpiryDate() == null) { - if (LocalDate.parse(entitlementPool.getStartDate(), formatter).atStartOfDay().isBefore + if(startDate != null && expiryDate == null) { + if (LocalDate.parse(startDate, formatter).atStartOfDay().isBefore (LocalDate.now().atStartOfDay())) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(entitlementPool.getVendorLicenseModelId()) + new InvalidDateErrorBuilder(vendorLicenseModelId) .build()); } } - if(entitlementPool.getStartDate() == null && entitlementPool.getExpiryDate() != null) { + if(startDate == null && expiryDate != null) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(entitlementPool.getVendorLicenseModelId()) + new InvalidDateErrorBuilder(vendorLicenseModelId) .build()); } @@ -545,39 +543,31 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugExitMessage(null,null); } - private void validateUpdateDate(EntitlementPoolEntity entitlementPool){ - mdcDataDebugMessage.debugEntryMessage("Start date and end date", entitlementPool.getStartDate - ()+" "+entitlementPool.getExpiryDate()); + private void validateUpdateDate(String startDate, String expiryDate, String vendorLicenseModelId){ + mdcDataDebugMessage.debugEntryMessage("Start date and end date", startDate + +" "+ expiryDate); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy'T'HH:mm:ss'Z'"); - entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool - .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" - : null) : null); - entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool - .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" - : null) : null); - - if(entitlementPool.getStartDate() != null && entitlementPool.getExpiryDate() != null) { - if (LocalDate.parse(entitlementPool.getExpiryDate(), formatter).atStartOfDay() - .isEqual(LocalDate.parse(entitlementPool.getStartDate(), formatter).atStartOfDay()) || - LocalDate.parse(entitlementPool.getExpiryDate(), formatter) - .isBefore(LocalDate.parse(entitlementPool.getStartDate(), formatter))) { + if(startDate != null && expiryDate != null) { + if (LocalDate.parse(expiryDate, formatter).atStartOfDay() + .isEqual(LocalDate.parse(startDate, formatter).atStartOfDay()) || + LocalDate.parse(expiryDate, formatter).isBefore(LocalDate.parse(startDate, formatter))) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(entitlementPool.getVendorLicenseModelId()) + new InvalidDateErrorBuilder(vendorLicenseModelId) .build()); } } - if(entitlementPool.getStartDate() == null && entitlementPool.getExpiryDate() != null) { + if(startDate == null && expiryDate != null) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, LoggerTragetServiceName.VALIDATE_DATE_RANGE,ErrorLevel.ERROR.name(), LoggerErrorCode.DATA_ERROR.getErrorCode(), LoggerErrorDescription.INVALID_VALUE); throw new CoreException( - new InvalidDateErrorBuilder(entitlementPool.getVendorLicenseModelId()) + new InvalidDateErrorBuilder(vendorLicenseModelId) .build()); } @@ -590,7 +580,15 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id, EP id", entitlementPool .getVendorLicenseModelId(), entitlementPool.getId()); - validateUpdateDate(entitlementPool); + entitlementPool.setStartDate(entitlementPool.getStartDate() != null ? (entitlementPool + .getStartDate().trim().length() != 0 ? entitlementPool.getStartDate()+"T00:00:00Z" + : null) : null); + entitlementPool.setExpiryDate(entitlementPool.getExpiryDate() != null ? (entitlementPool + .getExpiryDate().trim().length() != 0 ? entitlementPool.getExpiryDate()+"T23:59:59Z" + : null) : null); + + validateUpdateDate(entitlementPool.getStartDate(), entitlementPool.getExpiryDate(), + entitlementPool.getVendorLicenseModelId()); Version version = VersioningUtil.resolveVersion(entitlementPool.getVersion(), getVersionInfo(entitlementPool.getVendorLicenseModelId(), VersionableEntityAction.Write, user), user); @@ -692,6 +690,16 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugExitMessage("VLM id", licenseKeyGroup .getVendorLicenseModelId()); + + licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup + .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" + : null) : null); + licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup + .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" + : null) : null); + + validateCreateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(), + licenseKeyGroup.getVendorLicenseModelId()); return vendorLicenseFacade.createLicenseKeyGroup(licenseKeyGroup, user); } @@ -700,6 +708,16 @@ public class VendorLicenseManagerImpl implements VendorLicenseManager { mdcDataDebugMessage.debugEntryMessage("VLM id, LKG id", licenseKeyGroup .getVendorLicenseModelId(), licenseKeyGroup.getId()); + licenseKeyGroup.setStartDate(licenseKeyGroup.getStartDate() != null ? (licenseKeyGroup + .getStartDate().trim().length() != 0 ? licenseKeyGroup.getStartDate()+"T00:00:00Z" + : null) : null); + licenseKeyGroup.setExpiryDate(licenseKeyGroup.getExpiryDate() != null ? (licenseKeyGroup + .getExpiryDate().trim().length() != 0 ? licenseKeyGroup.getExpiryDate()+"T23:59:59Z" + : null) : null); + + validateUpdateDate(licenseKeyGroup.getStartDate(), licenseKeyGroup.getExpiryDate(), + licenseKeyGroup.getVendorLicenseModelId()); + Version version = VersioningUtil.resolveVersion(licenseKeyGroup.getVersion(), getVersionInfo(licenseKeyGroup.getVendorLicenseModelId(), VersionableEntityAction.Write, user), user); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/EntitlementPoolTest.java b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/EntitlementPoolTest.java index 9b079de3fa..620c6fbf91 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/EntitlementPoolTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/EntitlementPoolTest.java @@ -89,15 +89,9 @@ public class EntitlementPoolTest { entitlementPool.setDescription(desc); entitlementPool.setThresholdValue(threshold); entitlementPool.setThresholdUnit(thresholdUnit); - entitlementPool - .setEntitlementMetric(new ChoiceOrOther<>(entitlementMetricChoice, entitlementMetricOther)); entitlementPool.setIncrements(increments); - entitlementPool.setAggregationFunction( - new ChoiceOrOther<>(aggregationFunctionChoice, aggregationFunctionOther)); entitlementPool.setOperationalScope( new MultiChoiceOrOther<>(operationalScopeChoices, operationalScopeOther)); - entitlementPool.setTime(new ChoiceOrOther<>(timeChoice, timeOther)); - entitlementPool.setManufacturerReferenceNumber(sku); return entitlementPool; } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/LicenseKeyGroupTest.java b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/LicenseKeyGroupTest.java index 782d93a885..04f7c794bc 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/LicenseKeyGroupTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/LicenseKeyGroupTest.java @@ -29,6 +29,7 @@ import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.vendorlicense.dao.LicenseKeyGroupDao; import org.openecomp.sdc.vendorlicense.dao.LimitDao; import org.openecomp.sdc.vendorlicense.dao.types.*; +import org.openecomp.sdc.vendorlicense.errors.VendorLicenseErrorCodes; import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade; import org.openecomp.sdc.vendorlicense.impl.VendorLicenseManagerImpl; import org.openecomp.sdc.versioning.dao.types.Version; @@ -41,6 +42,10 @@ import org.testng.annotations.Test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -54,6 +59,8 @@ public class LicenseKeyGroupTest { private final String USER = "lkgTestUser"; private final String LKG_NAME = "LKG name"; private final String LT_NAME = "LT name"; + private final String LKG1_NAME = "LKG1 name"; + private final String USER1 = "user1"; @Mock private VendorLicenseFacade vendorLicenseFacade; @@ -186,8 +193,193 @@ public class LicenseKeyGroupTest { } } + @Test + public void createTest() { + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().format(formatter)); + lkg.setExpiryDate(LocalDate.now().plusDays(1L).format(formatter)); + + vendorLicenseManagerImpl.createLicenseKeyGroup(lkg, USER1); + } + + @Test + public void createWithInvalidStartExpiryDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().format(formatter)); + lkg.setExpiryDate(LocalDate.now().minusDays(2L).format(formatter)); + vendorLicenseManagerImpl.createLicenseKeyGroup(lkg, USER1); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + @Test + public void createWithoutStartDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setExpiryDate(LocalDate.now().plusDays(2L).format(formatter)); + vendorLicenseManagerImpl.createLicenseKeyGroup(lkg, USER1).getId(); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + @Test + public void createWithSameStartExpiryDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().plusDays(2L).format(formatter)); + lkg.setExpiryDate(LocalDate.now().plusDays(2L).format(formatter)); + vendorLicenseManagerImpl.createLicenseKeyGroup(lkg, USER1).getId(); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + @Test + public void createUpdate() { + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().minusDays(3L).format(formatter)); + lkg.setExpiryDate(LocalDate.now().minusDays(2L).format(formatter)); + VersionInfo info = new VersionInfo(); + Version version = new Version(); + info.getViewableVersions().add(version); + info.setActiveVersion(version); + doReturn(info).when(vendorLicenseFacade).getVersionInfo(anyObject(),anyObject(),anyObject()); + + vendorLicenseManagerImpl.updateLicenseKeyGroup(lkg, USER1); + } + + @Test + public void updateWithInvalidStartExpiryDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().format(formatter)); + lkg.setExpiryDate(LocalDate.now().minusDays(2L).format(formatter)); + vendorLicenseManagerImpl.updateLicenseKeyGroup(lkg, USER1); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + @Test + public void updateWithoutStartDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setExpiryDate(LocalDate.now().plusDays(2L).format(formatter)); + vendorLicenseManagerImpl.updateLicenseKeyGroup(lkg, USER1); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + @Test + public void updateWithSameStartExpiryDateTest() { + try { + + Set opScopeChoices; + opScopeChoices = new HashSet<>(); + opScopeChoices.add(OperationalScope.Core); + opScopeChoices.add(OperationalScope.CPU); + opScopeChoices.add(OperationalScope.Network_Wide); + LicenseKeyGroupEntity lkg = + createLicenseKeyGroup("vlm1Id", null, LKG1_NAME, "LKG1 dec",LicenseKeyType.Unique, + new MultiChoiceOrOther<>(opScopeChoices, null)); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); + lkg.setStartDate(LocalDate.now().format(formatter)); + lkg.setExpiryDate(LocalDate.now().format(formatter)); + vendorLicenseManagerImpl.updateLicenseKeyGroup(lkg, USER1); + Assert.fail(); + } catch (CoreException exception) { + Assert.assertEquals(exception.code().id(), VendorLicenseErrorCodes.DATE_RANGE_INVALID); + } + } + + + public static LicenseKeyGroupEntity createLicenseKeyGroup(String vlmId, Version version, + String name, String desc, + LicenseKeyType type, + MultiChoiceOrOther operationalScope) { + LicenseKeyGroupEntity licenseKeyGroup = new LicenseKeyGroupEntity(); + licenseKeyGroup.setVendorLicenseModelId(vlmId); + licenseKeyGroup.setVersion(version); + licenseKeyGroup.setName(name); + licenseKeyGroup.setDescription(desc); + licenseKeyGroup.setType(type); + licenseKeyGroup.setOperationalScope(operationalScope); + return licenseKeyGroup; + } + /*public static final String LKG1_NAME = "LKG1 name"; private static final Version VERSION01 = new Version(0, 1); + public static final String LKG1_NAME = "LKG1 name"; private static final String USER1 = "user1"; public static String vlm1Id; public static String vlm2Id; @@ -211,7 +403,12 @@ public class LicenseKeyGroupTest { return licenseKeyGroup; } - @BeforeClass + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + } + + /*@BeforeClass private void init() { licenseKeyGroupDao = LicenseKeyGroupDaoFactory.getInstance().createInterface(); noSqlDb = NoSqlDbFactory.getInstance().createInterface(); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/VendorLicenseFacadeImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/VendorLicenseFacadeImplTest.java index 58db488d86..40bbc77faa 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/VendorLicenseFacadeImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-license-manager/src/test/java/org/openecomp/sdc/vendorlicense/VendorLicenseFacadeImplTest.java @@ -1,18 +1,27 @@ package org.openecomp.sdc.vendorlicense; +import org.junit.Assert; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.Spy; import org.openecomp.sdc.vendorlicense.dao.*; +import org.openecomp.sdc.vendorlicense.dao.types.EntitlementPoolEntity; import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; import org.openecomp.sdc.vendorlicense.facade.impl.VendorLicenseFacadeImpl; +import org.openecomp.sdc.vendorlicense.impl.VendorLicenseManagerImpl; import org.openecomp.sdc.versioning.VersioningManager; import org.openecomp.sdc.versioning.dao.types.Version; +import org.openecomp.sdc.versioning.types.VersionInfo; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Set; import static org.mockito.Matchers.anyObject; @@ -21,12 +30,16 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; /** - * Created by diveshm on 7/3/2017. + * This test just verifies Feature Group Get and List APIs. */ public class VendorLicenseFacadeImplTest { //JUnit Test Cases using Mockito private static final Version VERSION01 = new Version(0, 1); - private final String FG1_NAME = "FG1 name"; + public static final String EP1 = "ep1"; + public static final String MRN = "mrn"; + public static final String VLM_ID = "VLM_ID"; + public static final String USER = "USER1"; + @Mock private VendorLicenseModelDao vendorLicenseModelDao; @@ -50,78 +63,101 @@ public class VendorLicenseFacadeImplTest { @Spy private VendorLicenseFacadeImpl vendorLicenseFacadeImpl; - public FeatureGroupEntity createFeatureGroup(String vlmId, Version version, String id, String name, String desc, - String partNumber, String manufacturerReferenceNumber, Set - licenseKeyGroupIds, Set entitlementPoolIds, Set - referencingLicenseAgreements){ - FeatureGroupEntity featureGroup = new FeatureGroupEntity(vlmId, version, id); - featureGroup.setVendorLicenseModelId(vlmId); - featureGroup.setVersion(version); - featureGroup.setId(id); - featureGroup.setName(name); - featureGroup.setDescription(desc); - featureGroup.setPartNumber(partNumber); - //featureGroup.setManufacturerReferenceNumber(manufacturerReferenceNumber); - featureGroup.setLicenseKeyGroupIds(licenseKeyGroupIds); - featureGroup.setEntitlementPoolIds(entitlementPoolIds); - featureGroup.setReferencingLicenseAgreements(referencingLicenseAgreements); - - return featureGroup; - } - @BeforeMethod public void setUp() throws Exception{ MockitoAnnotations.initMocks(this); } @Test - public void testCreate(){ - Set licenseKeyGroupIds; - licenseKeyGroupIds = new HashSet<>(); - licenseKeyGroupIds.add("lkg1"); + public void testGetFeatureGroupWhenMRNNull () { + resetFieldModifiers(); + + FeatureGroupEntity featureGroup = createFeatureGroup(); + + VersionInfo info = new VersionInfo(); + info.getViewableVersions().add(VERSION01); + info.setActiveVersion(VERSION01); Set entitlementPoolIds; entitlementPoolIds = new HashSet<>(); - entitlementPoolIds.add("ep1"); - - Set referencingLicenseAgreements; - referencingLicenseAgreements = new HashSet<>(); - referencingLicenseAgreements.add("la1"); + entitlementPoolIds.add(EP1); - FeatureGroupEntity featureGroupEntity = createFeatureGroup("vlmId", VERSION01, "fgId", FG1_NAME, "fg1 desc", - "partNumber", "MRN", licenseKeyGroupIds, entitlementPoolIds, - referencingLicenseAgreements); + EntitlementPoolEntity ep = createEP(); - doReturn(featureGroupEntity).when(featureGroupDao).get(anyObject()); + featureGroup.setEntitlementPoolIds(entitlementPoolIds); - /*if(featureGroupEntity.getManufacturerReferenceNumber() != null) - featureGroupDao.create(featureGroupEntity); - verify(featureGroupDao).create(anyObject());*/ + doReturn(info).when(vendorLicenseFacadeImpl).getVersionInfo(anyObject(),anyObject(),anyObject()); + doReturn(featureGroup).when(featureGroupDao).get(featureGroup); + doReturn(ep).when(entitlementPoolDao).get(anyObject()); + doReturn(MRN).when(entitlementPoolDao).getManufacturerReferenceNumber(anyObject()); + FeatureGroupEntity retrieved = vendorLicenseFacadeImpl.getFeatureGroup(featureGroup, USER); + Assert.assertEquals(MRN, retrieved.getManufacturerReferenceNumber()); } @Test - public void testCreateWithoutManufacturerReferenceNumber(){ - Set licenseKeyGroupIds; - licenseKeyGroupIds = new HashSet<>(); - licenseKeyGroupIds.add("lkg1"); + public void testListFeatureGroups () { + resetFieldModifiers(); - Set entitlementPoolIds; - entitlementPoolIds = new HashSet<>(); - entitlementPoolIds.add("ep1"); + FeatureGroupEntity featureGroup = createFeatureGroup(); - Set referencingLicenseAgreements; - referencingLicenseAgreements = new HashSet<>(); - referencingLicenseAgreements.add("la1"); + Collection featureGroups = new ArrayList(); + featureGroups.add(featureGroup); - FeatureGroupEntity featureGroupEntity = createFeatureGroup("vlmId", VERSION01, "fgId", FG1_NAME, "fg1 desc", - "partNumber", null, licenseKeyGroupIds, entitlementPoolIds, - referencingLicenseAgreements); - doReturn(featureGroupEntity).when(featureGroupDao).get(anyObject()); + VersionInfo info = new VersionInfo(); + info.getViewableVersions().add(VERSION01); + info.setActiveVersion(VERSION01); - /*if(featureGroupEntity.getManufacturerReferenceNumber() != null) - featureGroupDao.create(featureGroupEntity); + EntitlementPoolEntity ep = createEP(); - verify(featureGroupDao, never()).create(anyObject());*/ + doReturn(info).when(vendorLicenseFacadeImpl).getVersionInfo(anyObject(),anyObject(),anyObject()); + doReturn(featureGroup).when(featureGroupDao).get(featureGroup); + doReturn(ep).when(entitlementPoolDao).get(anyObject()); + doReturn(MRN).when(entitlementPoolDao).getManufacturerReferenceNumber(anyObject()); + Collection retrieved = vendorLicenseFacadeImpl.listFeatureGroups(VLM_ID, + VERSION01, USER); + retrieved.stream().forEach(fg -> Assert.assertEquals(MRN,fg.getManufacturerReferenceNumber())); + } + + private void resetFieldModifiers() { + try { + Field fgField = VendorLicenseFacadeImpl.class.getDeclaredField("featureGroupDao"); + fgField.setAccessible(true); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(fgField, fgField.getModifiers() & ~Modifier.FINAL); + fgField.set(null, featureGroupDao); + + Field epField = VendorLicenseFacadeImpl.class.getDeclaredField("entitlementPoolDao"); + epField.setAccessible(true); + modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(epField, epField.getModifiers() & ~Modifier.FINAL); + epField.set(null, entitlementPoolDao); + } catch(NoSuchFieldException | IllegalAccessException e) + { + org.testng.Assert.fail(); + } + } + + private FeatureGroupEntity createFeatureGroup() { + FeatureGroupEntity featureGroup = new FeatureGroupEntity(VLM_ID, VERSION01, USER); + featureGroup.setManufacturerReferenceNumber(null); + VersionInfo info = new VersionInfo(); + info.getViewableVersions().add(VERSION01); + info.setActiveVersion(VERSION01); + + Set entitlementPoolIds; + entitlementPoolIds = new HashSet<>(); + entitlementPoolIds.add(EP1); + + featureGroup.setEntitlementPoolIds(entitlementPoolIds); + return featureGroup; + } + private EntitlementPoolEntity createEP() { + EntitlementPoolEntity ep = new EntitlementPoolEntity(VLM_ID,VERSION01, EP1); + ep.setManufacturerReferenceNumber(MRN); + return ep; } + } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/VSPPackage.zip b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/VSPPackage.zip deleted file mode 100644 index ca55484a3c..0000000000 Binary files a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/VSPPackage.zip and /dev/null differ diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml.versionsBackup b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml.versionsBackup deleted file mode 100644 index 839a192ec5..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/pom.xml.versionsBackup +++ /dev/null @@ -1,159 +0,0 @@ - - - 4.0.0 - - openecomp-sdc-vendor-software-product-manager - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-utilities-lib - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-nosqldb-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-vendor-software-product-core - 1.0-SNAPSHOT - - - org.openecomp.core - openecomp-heat-lib - ${project.version} - - - org.openecomp.core - openecomp-tosca-lib - ${project.version} - - - org.testng - testng - 6.9.10 - test - - - junit - junit - RELEASE - test - - - org.mockito - mockito-all - 1.10.19 - test - - - org.openecomp.sdc - openecomp-sdc-translator-core - 1.0-SNAPSHOT - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - 2.7.4 - - - org.codehaus.woodstox - woodstox-core-asl - 4.4.1 - - - - org.openecomp.sdc - openecomp-sdc-vendor-license-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-enrichment-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-validation-api - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-validation-impl - 1.0-SNAPSHOT - runtime - - - org.openecomp.sdc - openecomp-sdc-enrichment-impl - 1.0-SNAPSHOT - - - commons-io - commons-io - ${commons.io.version} - - - org.openecomp.sdc - openecomp-sdc-model-impl - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-validation-manager - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-logging-core - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-logging-api - 1.0-SNAPSHOT - - - org.openecomp.sdc - openecomp-sdc-healing-core - 1.0-SNAPSHOT - runtime - - - org.openecomp.sdc - openecomp-sdc-healing-impl - 1.0-SNAPSHOT - runtime - - - org.openecomp.sdc - openecomp-sdc-healing-api - 1.0-SNAPSHOT - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.19.1 - - false - true - - - - - - - org.openecomp.sdc - backend - 1.0-SNAPSHOT - - - - \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ComputeErrorBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ComputeErrorBuilder.java new file mode 100644 index 0000000000..1c728bdfbb --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ComputeErrorBuilder.java @@ -0,0 +1,25 @@ +package org.openecomp.sdc.vendorsoftwareproduct.errors; + +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; + +/** + * The Compute error builder. + */ +public class ComputeErrorBuilder { + private static final String COMPUTE_NAME_FORMAT_MSG = "Field does not conform to predefined criteria" + + ": name : must match %s"; + + /** + * Gets image name format error builder. + * + * @return the image name format error builder + */ + public static ErrorCode getComputeNameFormatErrorBuilder(String pattern) { + ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); + builder.withId(VendorSoftwareProductErrorCodes.COMPUTE_NAME_FORMAT_NOT_ALLOWED); + builder.withCategory(ErrorCategory.APPLICATION); + builder.withMessage(String.format(COMPUTE_NAME_FORMAT_MSG, pattern)); + return builder.build(); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java index 63d716504b..97476a2dfd 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/DeploymentFlavorErrorBuilder.java @@ -17,6 +17,8 @@ public class DeploymentFlavorErrorBuilder { "Invalid Request,Same Vfc cannot be associated more than once."; private static final String DUPLICATE_DEPLOYMENT_FLAVOR_MODEL_NOT_ALLOWED_MSG = "Invalid request, Deployment Flavor with model %s already exists for Vsp with Id %s."; + private static final String DEPLOYMENT_FLAVOUR_NAME_FORMAT_MSG = "Field does not conform to predefined criteria" + + ": name : must match %s"; private static final String INVALID_COMPUTE_FLAVOR_ID_MSG = "Invalid request, Compute Flavor with Id %s does not exist for VFC with Id %s."; private static final String INVALID_COMPONENT_COMPUTE_ASSOCIATION_ERROR_MSG="VSP cannot be " + @@ -92,4 +94,12 @@ public class DeploymentFlavorErrorBuilder { builder.withMessage(String.format(FEATUREGROUP_REQUIRED_IN_DEPLOYMENT_FLAVOR_MSG)); return builder.build(); } + + public static ErrorCode getDeploymentFlavorNameFormatErrorBuilder(String pattern){ + ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); + builder.withId(VendorSoftwareProductErrorCodes.DEPLOYMENT_FLAVOR_NAME_FORMAT_NOT_ALLOWED); + builder.withCategory(ErrorCategory.APPLICATION); + builder.withMessage(String.format(DEPLOYMENT_FLAVOUR_NAME_FORMAT_MSG, pattern)); + return builder.build(); + } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ImageErrorBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ImageErrorBuilder.java index 95bff60479..24883b5c13 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ImageErrorBuilder.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/ImageErrorBuilder.java @@ -1,13 +1,10 @@ package org.openecomp.sdc.vendorsoftwareproduct.errors; -import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes.DUPLICATE_IMAGE_NAME_NOT_ALLOWED; - -import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes.UPDATE_IMAGE_NOT_ALLOWED; -import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes.VFC_IMAGE_INVALID_FORMAT; - import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; +import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes.*; + /** * The Image error builder. */ @@ -15,7 +12,8 @@ public class ImageErrorBuilder { private static final String VFC_IMAGE_DUPLICATE_NAME_MSG = "Invalid request, Image with name %s" + " already exists for component with ID %s."; - + private static final String VFC_IMAGE_NAME_FORMAT_MSG = "Field does not conform to predefined criteria" + + ": name : must match %s"; private static final String IMAGE_INVALID_FORMAT_MSG = "The format value doesn't meet the " + "expected attribute value."; @@ -28,11 +26,24 @@ public class ImageErrorBuilder { * * @return the duplicate image name error builder */ - public static ErrorCode getDuplicateImageNameErrorBuilder(String imageName, String componenetId) { + public static ErrorCode getDuplicateImageNameErrorBuilder(String imageName, String componentId) { ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); builder.withId(DUPLICATE_IMAGE_NAME_NOT_ALLOWED); builder.withCategory(ErrorCategory.APPLICATION); - builder.withMessage(String.format(VFC_IMAGE_DUPLICATE_NAME_MSG, imageName, componenetId )); + builder.withMessage(String.format(VFC_IMAGE_DUPLICATE_NAME_MSG, imageName, componentId )); + return builder.build(); + } + + /** + * Gets image name format error builder. + * + * @return the image name format error builder + */ + public static ErrorCode getImageNameFormatErrorBuilder(String pattern) { + ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); + builder.withId(IMAGE_NAME_FORMAT_NOT_ALLOWED); + builder.withCategory(ErrorCategory.APPLICATION); + builder.withMessage(String.format(VFC_IMAGE_NAME_FORMAT_MSG, pattern)); return builder.build(); } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/NicErrorBuilder.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/NicErrorBuilder.java new file mode 100644 index 0000000000..fc8ecf26a4 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/errors/NicErrorBuilder.java @@ -0,0 +1,27 @@ +package org.openecomp.sdc.vendorsoftwareproduct.errors; + +import org.openecomp.sdc.common.errors.ErrorCategory; +import org.openecomp.sdc.common.errors.ErrorCode; + +import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED; + +/** + * The NIC error builder. + */ +public class NicErrorBuilder { + private static final String NIC_NAME_FORMAT_MSG = "Field does not conform to predefined criteria" + + ": name : must match %s"; + + /** + * Gets image name format error builder. + * + * @return the image name format error builder + */ + public static ErrorCode getNicNameFormatErrorBuilder(String imageName, String pattern) { + ErrorCode.ErrorCodeBuilder builder = new ErrorCode.ErrorCodeBuilder(); + builder.withId(NIC_NAME_FORMAT_NOT_ALLOWED); + builder.withCategory(ErrorCategory.APPLICATION); + builder.withMessage(String.format(NIC_NAME_FORMAT_MSG, pattern)); + return builder.build(); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java index a2d1d708c1..cd102ebb1d 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImpl.java @@ -12,15 +12,15 @@ import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.ComputeManager; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComputeEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; +import org.openecomp.sdc.vendorsoftwareproduct.errors.ComputeErrorBuilder; import org.openecomp.sdc.vendorsoftwareproduct.errors.DuplicateComputeInComponentErrorBuilder; import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMethodErrorBuilder; import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes; @@ -34,14 +34,11 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEnti import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComputeData; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor; -import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.compute.Compute; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ComputeCompositionSchemaInput; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateInput; -import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.VersioningUtil; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; import java.util.ArrayList; import java.util.Collection; @@ -92,9 +89,13 @@ public class ComputeManagerImpl implements ComputeManager { onboardingMethodUpdateErrorCode.message()); throw new CoreException(onboardingMethodUpdateErrorCode); } else { + //validateComponentId(compute.getVspId(),compute.getVersion(),compute.getComponentId()); - validateCompute(compute); - createdCompute = createCompute(compute); + Collection vfcComputeList = listCompute(compute.getVspId(),compute.getVersion + (),compute.getComponentId()); + + validateVfcCompute(compute, vfcComputeList, LoggerTragetServiceName.CREATE_COMPUTE); + createdCompute = createCompute(compute); } mdcDataDebugMessage @@ -108,7 +109,7 @@ public class ComputeManagerImpl implements ComputeManager { return compositionEntityDataManager.createCompute(compute); } - private void validateCompute(ComputeEntity compute) { + /*private void validateCompute(ComputeEntity compute) { Collection vfcComputeList = listCompute(compute.getVspId(),compute.getVersion (),compute.getComponentId()); @@ -123,7 +124,7 @@ public class ComputeManagerImpl implements ComputeManager { throw new CoreException(duplicateComputeInComponentErrorBuilder); } - } + }*/ private void validateComputeUpdate(ComputeEntity compute) { Collection vfcComputeList = listCompute(compute.getVspId(),compute.getVersion @@ -347,7 +348,7 @@ public class ComputeManagerImpl implements ComputeManager { retrieved.setQuestionnaireData(null); vfcComputeList.remove(retrieved); if(vspInfoDao.isManual(compute.getVspId(), compute.getVersion())) - validateVfcCompute(compute, vfcComputeList); + validateVfcCompute(compute, vfcComputeList, LoggerTragetServiceName.UPDATE_COMPUTE); //Set format to default value in order to handle FTL validation when compute format is null /*if(compute.getComputeCompositionData().getFormat() == null) @@ -384,22 +385,32 @@ public class ComputeManagerImpl implements ComputeManager { } } - private void validateVfcCompute(ComputeEntity compute, Collection vfcComputeList) { - if (isComputeNameDuplicate(vfcComputeList,compute.getComputeCompositionData().getName(), compute.getId())) { - ErrorCode errorCode = DuplicateComputeInComponentErrorBuilder.getDuplicateComputeNameErrorBuilder(compute + private void validateVfcCompute(ComputeEntity compute, Collection vfcComputeList, String event) { + if(!compute.getComputeCompositionData().getName().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = ComputeErrorBuilder.getComputeNameFormatErrorBuilder( + VendorSoftwareProductConstants.NAME_PATTERN); + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + event, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + throw new CoreException(errorCode); + } + + if (isComputeNameDuplicate(vfcComputeList,compute.getComputeCompositionData().getName(), compute.getId())) { + ErrorCode errorCode = DuplicateComputeInComponentErrorBuilder.getDuplicateComputeNameErrorBuilder(compute .getComputeCompositionData().getName(), compute.getComponentId()); - MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.CREATE_COMPONENT, ErrorLevel.ERROR.name(), + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + event, ErrorLevel.ERROR.name(), errorCode.id(),errorCode.message()); - throw new CoreException(errorCode); - } + throw new CoreException(errorCode); + } } private boolean isComputeNameDuplicate(Collection computes, String name, String computeId) { for (ComputeEntity compute : computes) { - if (compute.getComputeCompositionData().getName().equals(name) && !compute.getId().equals(computeId)) { + if (compute.getComputeCompositionData().getName().equalsIgnoreCase(name) && !compute.getId().equals(computeId)) { return true; } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeploymentFlavorManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeploymentFlavorManagerImpl.java index 7069d778a7..2e964458d5 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeploymentFlavorManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeploymentFlavorManagerImpl.java @@ -10,6 +10,7 @@ import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManager; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; @@ -23,17 +24,14 @@ import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMet import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator; import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.VersionedVendorSoftwareProductInfo; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentComputeAssociation; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.DeploymentFlavorCompositionSchemaInput; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext; -import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.VersioningUtil; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; import java.util.ArrayList; import java.util.Collection; @@ -112,6 +110,18 @@ public class DeploymentFlavorManagerImpl implements DeploymentFlavorManager { private void validateDeploymentFlavor(DeploymentFlavorEntity deploymentFlavorEntity, String user, Version activeVersion) { + + if(!deploymentFlavorEntity.getDeploymentFlavorCompositionData().getModel().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = DeploymentFlavorErrorBuilder.getDeploymentFlavorNameFormatErrorBuilder( + VendorSoftwareProductConstants.NAME_PATTERN); + + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.UPDATE_NIC, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + + throw new CoreException(errorCode); + } //Validation for unique model. Collection listDeploymentFlavors = listDeploymentFlavors(deploymentFlavorEntity.getVspId(), @@ -357,6 +367,17 @@ public class DeploymentFlavorManagerImpl implements DeploymentFlavorManager { updateDeploymentFlavorErrorBuilder.message()); throw new CoreException(updateDeploymentFlavorErrorBuilder); } + else { + if(!deploymentFlavorEntity.getDeploymentFlavorCompositionData().getModel().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = DeploymentFlavorErrorBuilder.getDeploymentFlavorNameFormatErrorBuilder( + VendorSoftwareProductConstants.NAME_PATTERN); + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.UPDATE_DEPLOYMENT_FLAVOR, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + throw new CoreException(errorCode); + } + } //deploymentFlavorEntity.setVersion(activeVersion); DeploymentFlavorEntity retrieved = getDeploymentFlavor(deploymentFlavorEntity.getVspId(), deploymentFlavorEntity.getVersion(), diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java index e180138119..6a8f9e0c45 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImpl.java @@ -12,9 +12,7 @@ import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.ImageManager; -import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.ComputeDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; @@ -34,10 +32,8 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.ima import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ImageCompositionSchemaInput; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateInput; -import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.VersioningUtil; import org.openecomp.sdc.versioning.dao.types.Version; -import org.openecomp.sdc.versioning.types.VersionableEntityAction; import java.util.Collection; @@ -66,7 +62,8 @@ public class ImageManagerImpl implements ImageManager { VersionableEntityAction.Write, user).getActiveVersion(); imageEntity.setVersion(activeVersion);*/ - if (!vspInfoDao.isManual(imageEntity.getVspId(), imageEntity.getVersion())) { + boolean isManual = vspInfoDao.isManual(imageEntity.getVspId(), imageEntity.getVersion()); + if (!isManual) { ErrorCode errorCode = NotSupportedHeatOnboardMethodErrorBuilder .getAddImageNotSupportedHeatOnboardMethodErrorBuilder(); @@ -80,7 +77,7 @@ public class ImageManagerImpl implements ImageManager { Collection vfcImageList = listImages(imageEntity.getVspId() , imageEntity.getVersion(), imageEntity.getComponentId()); - validateVfcImage(imageEntity, vfcImageList); + validateVfcImage(isManual, imageEntity, vfcImageList, LoggerTragetServiceName.CREATE_IMAGE); compositionEntityDataManager.createImage(imageEntity); return imageEntity; } @@ -219,11 +216,11 @@ public class ImageManagerImpl implements ImageManager { /*Version activeVersion = getVersionInfo(image.getVspId(), VersionableEntityAction.Write, user).getActiveVersion(); image.setVersion(activeVersion);*/ - + boolean isManual = vspInfoDao.isManual(image.getVspId(), image.getVersion()); ImageEntity retrieved = getImageEntity(image.getVspId(), image.getVersion(), image.getComponentId(), image.getId()); - if(!vspInfoDao.isManual(image.getVspId(), image.getVersion())) { + if(!isManual) { final Image imageCompositionData = image.getImageCompositionData(); final String fileName = imageCompositionData.getFileName(); //final String format = imageCompositionData.getFormat(); @@ -239,7 +236,7 @@ public class ImageManagerImpl implements ImageManager { //Set to null so that retrieved object is equal to one in list and gets removed. retrieved.setQuestionnaireData(null); vfcImageList.remove(retrieved); - validateVfcImage(image, vfcImageList); + validateVfcImage(isManual, image, vfcImageList, LoggerTragetServiceName.UPDATE_IMAGE); //Set format to default value in order to handle FTL validation when image format is null /*if(image.getImageCompositionData().getFormat() == null) @@ -325,13 +322,25 @@ public class ImageManagerImpl implements ImageManager { return false; } - private void validateVfcImage(ImageEntity image, Collection vfcImageList) { + private void validateVfcImage(boolean isManual, ImageEntity image, Collection vfcImageList, String event) { + if(isManual && !image.getImageCompositionData().getFileName().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = ImageErrorBuilder.getImageNameFormatErrorBuilder( + VendorSoftwareProductConstants.NAME_PATTERN); + + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + event, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + + throw new CoreException(errorCode); + } + if (isImageNameDuplicate(vfcImageList,image.getImageCompositionData().getFileName())) { ErrorCode errorCode = ImageErrorBuilder.getDuplicateImageNameErrorBuilder(image .getImageCompositionData().getFileName(), image.getComponentId()); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, - LoggerTragetServiceName.CREATE_COMPONENT, ErrorLevel.ERROR.name(), + event, ErrorLevel.ERROR.name(), errorCode.id(),errorCode.message()); throw new CoreException(errorCode); @@ -354,6 +363,4 @@ public class ImageManagerImpl implements ImageManager { .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, schemaInput); } - - } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImpl.java index ef33812ddc..06e54528b7 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImpl.java @@ -2,7 +2,6 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl; import org.apache.commons.collections4.MapUtils; import org.openecomp.sdc.datatypes.error.ErrorLevel; -import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.generator.core.services.ManualVspToscaGenerationService; import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel; import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage; @@ -14,8 +13,8 @@ import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager; +import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic; -import org.openecomp.sdc.vendorsoftwareproduct.utils.ManualVspDataCollectionService; import org.openecomp.sdc.versioning.dao.types.Version; import java.util.List; @@ -25,12 +24,12 @@ import java.util.Optional; public class ManualVspToscaManagerImpl implements ManualVspToscaManager { private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage(); + private ManualVspDataCollectionService + manualVspDataCollectionService = new ManualVspDataCollectionService(); @Override public VspModelInfo gatherVspInformation(String vspId, Version version, String user) { mdcDataDebugMessage.debugEntryMessage(null, null); - ManualVspDataCollectionService - manualVspDataCollectionService = new ManualVspDataCollectionService(); VspModelInfo vspModelInfo = new VspModelInfo(); //Get Release Vendor Name Optional releaseVendor; @@ -40,7 +39,8 @@ public class ManualVspToscaManagerImpl implements ManualVspToscaManager { releaseVendor = Optional.empty(); MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Release Vendor not found"); + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Release Vendor not found : " + + ex.getMessage()); } releaseVendor.ifPresent(vspModelInfo::setReleaseVendor); @@ -51,7 +51,8 @@ public class ManualVspToscaManagerImpl implements ManualVspToscaManager { } catch (Exception ex) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect allowed flavors"); + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect allowed flavors : " + + ex.getMessage()); allowedFlavors = null; } if (MapUtils.isNotEmpty(allowedFlavors)) { @@ -66,7 +67,8 @@ public class ManualVspToscaManagerImpl implements ManualVspToscaManager { } catch (Exception ex) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component images"); + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component images : " + + ex.getMessage()); vspComponentImages = null; } if (MapUtils.isNotEmpty(vspComponentImages)) { @@ -80,7 +82,8 @@ public class ManualVspToscaManagerImpl implements ManualVspToscaManager { } catch (Exception ex) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp components"); + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp components : " + + ex.getMessage()); vspComponents = null; } if (MapUtils.isNotEmpty(vspComponents)) { @@ -94,7 +97,8 @@ public class ManualVspToscaManagerImpl implements ManualVspToscaManager { } catch (Exception ex) { MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_API, LoggerTragetServiceName.COLLECT_MANUAL_VSP_TOSCA_DATA, ErrorLevel.INFO.name(), - LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component nics"); + LoggerErrorCode.DATA_ERROR.getErrorCode(), "Unable to collect vsp component nics : " + + ex.getMessage()); vspComponentNics = null; } if (MapUtils.isNotEmpty(vspComponentNics)) { diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java index b196b3f54c..0304353113 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImpl.java @@ -31,18 +31,13 @@ import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.vendorsoftwareproduct.NetworkManager; import org.openecomp.sdc.vendorsoftwareproduct.NicManager; +import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants; import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NetworkEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; -import org.openecomp.sdc.vendorsoftwareproduct.errors.CompositionEditNotAllowedErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.DeleteNicErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.DuplicateNicInComponentErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.NicInternalNetworkErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.NicNetworkIdNotAllowedExternalNetworkErrorBuilder; -import org.openecomp.sdc.vendorsoftwareproduct.errors.NotSupportedHeatOnboardMethodErrorBuilder; +import org.openecomp.sdc.vendorsoftwareproduct.errors.*; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator; import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse; @@ -55,7 +50,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.NicCompositionSchemaInput; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext; import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateInput; -import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.VersioningUtil; import org.openecomp.sdc.versioning.dao.types.Version; @@ -145,6 +139,19 @@ public class NicManagerImpl implements NicManager { String networkId = nic.getNicCompositionData().getNetworkId(); NetworkType networkType = nic.getNicCompositionData().getNetworkType(); String networkDescription = nic.getNicCompositionData().getNetworkDescription(); + + if(!nic.getNicCompositionData().getName().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = NicErrorBuilder.getNicNameFormatErrorBuilder(nic + .getNicCompositionData().getName(), VendorSoftwareProductConstants.NAME_PATTERN); + + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.CREATE_NIC, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + + throw new CoreException(errorCode); + } + listNics.forEach(nicEntity -> { Nic nicdata = nicEntity.getNicCompositionData(); if (nic.getNicCompositionData().getName().equalsIgnoreCase(nicdata.getName())) { @@ -265,6 +272,18 @@ public class NicManagerImpl implements NicManager { schemaInput.setManual(vspInfoDao.isManual(nic.getVspId(), nic.getVersion())); schemaInput.setNic(retrieved.getNicCompositionData()); + if(schemaInput.isManual() && !nic.getNicCompositionData().getName().matches(VendorSoftwareProductConstants.NAME_PATTERN)) + { + ErrorCode errorCode = NicErrorBuilder.getNicNameFormatErrorBuilder(nic + .getNicCompositionData().getName(), VendorSoftwareProductConstants.NAME_PATTERN); + + MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB, + LoggerTragetServiceName.UPDATE_NIC, ErrorLevel.ERROR.name(), + errorCode.id(),errorCode.message()); + + throw new CoreException(errorCode); + } + CompositionEntityValidationData validationData = compositionEntityDataManager .validateEntity(nic, SchemaTemplateContext.composition, schemaInput); if (CollectionUtils.isEmpty(validationData.getErrors())) { diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java index 959cf15789..07e84803aa 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java @@ -29,6 +29,7 @@ import org.openecomp.core.util.UniqueValueUtil; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.validation.util.MessageContainerUtil; import org.openecomp.sdc.activityLog.ActivityLogManager; import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity; import org.openecomp.sdc.common.errors.CoreException; @@ -47,6 +48,7 @@ import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.api.annotations.Metrics; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; +import org.openecomp.sdc.logging.messages.AuditMessages; import org.openecomp.sdc.logging.types.LoggerServiceName; import org.openecomp.sdc.logging.types.LoggerTragetServiceName; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; @@ -90,6 +92,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import static org.openecomp.sdc.logging.messages.AuditMessages.HEAT_VALIDATION_ERROR; import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID; import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues.PROCESS_NAME; @@ -225,6 +228,7 @@ public class OrchestrationTemplateCandidateManagerImpl throw new CoreException(new OrchestrationTemplateNotFoundErrorBuilder(vspId).build()); } + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_STARTED + vspId); OrchestrationTemplateActionResponse response = new OrchestrationTemplateActionResponse(); UploadFileResponse uploadFileResponse = new UploadFileResponse(); OrchestrationTemplateCandidateData candidateDataEntity = candidate.get(); @@ -233,6 +237,8 @@ public class OrchestrationTemplateCandidateManagerImpl if (!fileContent.isPresent()) { response.addStructureErrors(uploadFileResponse.getErrors()); mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); return response; } @@ -246,6 +252,8 @@ public class OrchestrationTemplateCandidateManagerImpl Messages.FOUND_UNASSIGNED_FILES.getErrorMessage(), ErrorLevel.ERROR); mdcDataDebugMessage.debugExitMessage("VSP id", vspId); + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); return response; } @@ -258,6 +266,8 @@ public class OrchestrationTemplateCandidateManagerImpl Optional zipByteArrayInputStream = candidateService .fetchZipFileByteArrayInputStream(vspId, candidateDataEntity, manifest, uploadErrors); if (!zipByteArrayInputStream.isPresent()) { + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); return response; } @@ -275,8 +285,18 @@ public class OrchestrationTemplateCandidateManagerImpl deleteUploadDataAndContent(vspId, version); saveHotData(vspId, version, zipByteArrayInputStream.get(), fileContentMap, tree); + response.getErrors().values().forEach(errorList -> printAuditForErrors(errorList,vspId, + HEAT_VALIDATION_ERROR)); + if ( MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, response.getErrors + ()))) { + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_VALIDATION_COMPLETED + vspId); + } + + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_STARTED + vspId); + TranslatorOutput translatorOutput = HeatToToscaUtil.loadAndTranslateTemplateData(fileContentMap); + ToscaServiceModel toscaServiceModel = translatorOutput.getToscaServiceModel(); if (toscaServiceModel != null) { serviceModelDao.storeServiceModel(vspId, version, toscaServiceModel); @@ -287,7 +307,10 @@ public class OrchestrationTemplateCandidateManagerImpl .getNonUnifiedToscaServiceModel())); retainComponentQuestionnaireData(vspId, version, componentsQuestionnaire, componentNicsQuestionnaire, componentMibList, processes, processArtifact); + + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.HEAT_TRANSLATION_COMPLETED + vspId); } + uploadFileResponse.addStructureErrors(uploadErrors); ActivityLogEntity activityLogEntity = @@ -299,7 +322,6 @@ public class OrchestrationTemplateCandidateManagerImpl return response; } - @Override public Optional getFilesDataStructure( String vspId, Version version, String user) { @@ -462,7 +484,7 @@ public class OrchestrationTemplateCandidateManagerImpl componentArtifactDao.listArtifacts(new ComponentMonitoringUploadEntity(vspId, activeVersion, componentEntity.getId(), null)); - if(CollectionUtils.isNotEmpty(componentMib)){ + if (CollectionUtils.isNotEmpty(componentMib)) { componentMibList.put(componentName,componentMib); } @@ -614,4 +636,14 @@ public class OrchestrationTemplateCandidateManagerImpl return vspDetails; } -} + private void printAuditForErrors(List errorList, String vspId, String auditType) { + + errorList.forEach(errorMessage -> { + if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) { + logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(), + vspId)); + } + }); + } + + } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java index 0b48c334c6..89246376e4 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java @@ -48,6 +48,7 @@ import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage; import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage; +import org.openecomp.sdc.logging.messages.AuditMessages; import org.openecomp.sdc.logging.types.LoggerConstants; import org.openecomp.sdc.logging.types.LoggerErrorCode; import org.openecomp.sdc.logging.types.LoggerServiceName; @@ -594,6 +595,14 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa enrichmentManager.setModel(serviceModel); Map> enrichErrors = enrichmentManager.enrich(); + if (MapUtils.isEmpty(MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, enrichErrors))) { + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.ENRICHMENT_COMPLETED + + vendorSoftwareProductId); + } else { + enrichErrors.values().forEach(errorList -> + auditIfContainsErrors(errorList,vendorSoftwareProductId,AuditMessages.ENRICHMENT_ERROR)); + } + enrichedServiceModelDao .storeServiceModel(vendorSoftwareProductId, version, enrichmentManager.getModel()); @@ -993,6 +1002,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa packageInfoDao.create(packageInfo); + logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.CREATE_PACKAGE + vspId); + mdcDataDebugMessage.debugExitMessage("VSP id", vspId); return packageInfo; } @@ -1178,4 +1189,14 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa String user) { return vendorSoftwareProductDao.listComputesByVsp(vspId, version); } + + private void auditIfContainsErrors(List errorList, String vspId,String auditType) { + + errorList.forEach(errorMessage -> { + if (errorMessage.getLevel().equals(ErrorLevel.ERROR)) { + logger.audit(AuditMessages.AUDIT_MSG + String.format(auditType, errorMessage.getMessage(), + vspId)); + } + }); + } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/utils/ManualVspDataCollectionService.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/utils/ManualVspDataCollectionService.java deleted file mode 100644 index 981bfe941a..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/utils/ManualVspDataCollectionService.java +++ /dev/null @@ -1,418 +0,0 @@ -package org.openecomp.sdc.vendorsoftwareproduct.utils; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang.StringUtils; -import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.sdc.generator.datatypes.tosca.ComputeFlavor; -import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel; -import org.openecomp.sdc.generator.datatypes.tosca.LicenseFlavor; -import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage; -import org.openecomp.sdc.generator.datatypes.tosca.VendorInfo; -import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupEntity; -import org.openecomp.sdc.vendorlicense.dao.types.FeatureGroupModel; -import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade; -import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacadeFactory; -import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager; -import org.openecomp.sdc.vendorsoftwareproduct.ComponentManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.ComputeManager; -import org.openecomp.sdc.vendorsoftwareproduct.ComputeManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManager; -import org.openecomp.sdc.vendorsoftwareproduct.DeploymentFlavorManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.ImageManager; -import org.openecomp.sdc.vendorsoftwareproduct.ImageManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.NicManager; -import org.openecomp.sdc.vendorsoftwareproduct.NicManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductManager; -import org.openecomp.sdc.vendorsoftwareproduct.VspManagerFactory; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ImageEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; -import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; -import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentComputeAssociation; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Image; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic; -import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.compute.Compute; -import org.openecomp.sdc.vendorsoftwareproduct.types.questionnaire.component.image.ImageDetails; -import org.openecomp.sdc.versioning.dao.types.Version; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; - - -public class ManualVspDataCollectionService { - - private static final DeploymentFlavorManager deploymentFlavorManager = - DeploymentFlavorManagerFactory.getInstance().createInterface(); - private static final ComputeManager computeManager = - ComputeManagerFactory.getInstance().createInterface(); - private static final ImageManager imageManager = - ImageManagerFactory.getInstance().createInterface(); - private static final ComponentManager componentManager = - ComponentManagerFactory.getInstance().createInterface(); - private static final VendorSoftwareProductManager vendorSoftwareProductManager = - VspManagerFactory.getInstance().createInterface(); - private static final NicManager nicManager = - NicManagerFactory.getInstance().createInterface(); - private static final VendorLicenseFacade vendorLicenseFacade = - VendorLicenseFacadeFactory.getInstance().createInterface(); - - - /** - * Gets vendor name for the vsp. - * - * @param vspId the vsp id - * @param version the version - * @param user the user - * @return the release vendor name - */ - public Optional getReleaseVendor(String vspId, Version version, String user) { - String vendorName = null; - VspDetails vspDetails = vendorSoftwareProductManager.getVsp(vspId, version, user); - if (Objects.nonNull(vspDetails)) { - vendorName = vspDetails.getVendorName(); - } - return Optional.ofNullable(vendorName); - } - - /** - * Gets the deployment flavor data for manually onboarded VSPs. - * - * @param vspId the vsp id - * @param version the version - * @param user the user - * @return the allowed flavors - */ - public Map getAllowedFlavors(String vspId, Version version, - String user) { - Map allowedFlavors = new HashMap<>(); - Collection deploymentFlavorEntities = - deploymentFlavorManager.listDeploymentFlavors(vspId, version, user); - if (CollectionUtils.isNotEmpty(deploymentFlavorEntities)) { - for (DeploymentFlavorEntity deploymentFlavorEntity : deploymentFlavorEntities) { - DeploymentFlavor deploymentFlavorCompositionData = - deploymentFlavorEntity.getDeploymentFlavorCompositionData(); - - VspDetails vspDetails = vendorSoftwareProductManager.getVsp(vspId, version, user); - String vspVlmId; - Version vlmVersion; - if (Objects.nonNull(vspDetails)) { - vspVlmId = vspDetails.getVendorId(); - vlmVersion = vspDetails.getVlmVersion(); - if (StringUtils.isNotEmpty(vspVlmId)) { - DeploymentFlavorModel deploymentFlavorModel = new DeploymentFlavorModel(); - String featureGroupId = deploymentFlavorCompositionData.getFeatureGroupId(); - if (Objects.isNull(featureGroupId)) { - //No feature group associated with deployment flavor. So excluding this deployment - // flavor for Tosca model - continue; - } - //Gather and set License flavor info - LicenseFlavor licenseFlavor = getLicenseFlavor(featureGroupId); - deploymentFlavorModel.setLicense_flavor(licenseFlavor); - //Get sp_part_number - Optional partNumber = getPartNumber(vspVlmId, vlmVersion, featureGroupId, - user); - partNumber.ifPresent(deploymentFlavorModel::setSp_part_number); - //Gather and set Vendor Info - Optional vendorInfo = getVendorInfo(vspVlmId, vlmVersion, featureGroupId, - user); - vendorInfo.ifPresent(deploymentFlavorModel::setVendor_info); - //Gather and set Compute info - List componentComputeAssociations = - deploymentFlavorCompositionData.getComponentComputeAssociations(); - if (CollectionUtils.isNotEmpty(componentComputeAssociations)) { - for (ComponentComputeAssociation componentComputeAssociation : - componentComputeAssociations) { - String componentId = componentComputeAssociation.getComponentId(); - String computeFlavorId = componentComputeAssociation.getComputeFlavorId(); - Optional computeFlavor = - getComputeFlavor(vspId, version, componentId, computeFlavorId, user); - computeFlavor.ifPresent(deploymentFlavorModel::setCompute_flavor); - } - } - partNumber.ifPresent(spPartNumber -> allowedFlavors.put(spPartNumber, - deploymentFlavorModel)); - } - } - } - } - return allowedFlavors; - } - - /** - * Gets the component image data for manually onboarded VSPs. - * - * @param vspId the vsp id - * @param version the version - * @param user the user - * @return the vsp component images - */ - public Map> getVspComponentImages(String vspId, - Version version, - String user) { - Map> vspComponentImages = new HashMap<>(); - Collection deploymentFlavorEntities = - deploymentFlavorManager.listDeploymentFlavors(vspId, version, user); - for (DeploymentFlavorEntity deploymentFlavorEntity : deploymentFlavorEntities) { - DeploymentFlavor deploymentFlavorCompositionData = - deploymentFlavorEntity.getDeploymentFlavorCompositionData(); - - List componentComputeAssociations = - deploymentFlavorCompositionData.getComponentComputeAssociations(); - if (CollectionUtils.isNotEmpty(componentComputeAssociations)) { - for (ComponentComputeAssociation componentComputeAssociation : - componentComputeAssociations) { - String componentId = componentComputeAssociation.getComponentId(); - List componentImages = - getComponentImages(vspId, version, componentId, user); - if (CollectionUtils.isNotEmpty(componentImages)) { - vspComponentImages.put(componentId, componentImages); - } - } - } - } - return vspComponentImages; - } - - /** - * Gets the component data for manually onboarded VSPs. - * - * @param vspId the vsp id - * @param version the version - * @param user the user - * @return the vsp components - */ - public Map getVspComponents(String vspId, Version version, String user) { - Map componentIdNameMap = new HashMap<>(); - Collection deploymentFlavorEntities = - deploymentFlavorManager.listDeploymentFlavors(vspId, version, user); - for (DeploymentFlavorEntity deploymentFlavorEntity : deploymentFlavorEntities) { - DeploymentFlavor deploymentFlavorCompositionData = - deploymentFlavorEntity.getDeploymentFlavorCompositionData(); - - List componentComputeAssociations = - deploymentFlavorCompositionData.getComponentComputeAssociations(); - if (CollectionUtils.isNotEmpty(componentComputeAssociations)) { - for (ComponentComputeAssociation componentComputeAssociation : - componentComputeAssociations) { - String componentId = componentComputeAssociation.getComponentId(); - Optional componentName = getComponentName(vspId, version, componentId, user); - componentName.ifPresent(name -> componentIdNameMap.put(componentId, name)); - } - } - } - return componentIdNameMap; - } - - /** - * Gets the NIC data for manually onboarded VSPs. - * - * @param vspId the vsp id - * @param version the version - * @param user the user - * @return the vsp component nics - */ - public Map> getVspComponentNics(String vspId, Version version, String user) { - Map> vspComponentNics = new HashMap<>(); - Collection deploymentFlavorEntities = - deploymentFlavorManager.listDeploymentFlavors(vspId, version, user); - if (CollectionUtils.isNotEmpty(deploymentFlavorEntities)) { - for (DeploymentFlavorEntity deploymentFlavorEntity : deploymentFlavorEntities) { - DeploymentFlavor deploymentFlavorCompositionData = - deploymentFlavorEntity.getDeploymentFlavorCompositionData(); - if (Objects.nonNull(deploymentFlavorCompositionData)) { - List componentComputeAssociations = - deploymentFlavorCompositionData.getComponentComputeAssociations(); - if (CollectionUtils.isNotEmpty(componentComputeAssociations)) { - for (ComponentComputeAssociation componentComputeAssociation : - componentComputeAssociations) { - String componentId = componentComputeAssociation.getComponentId(); - List componentNics = getComponentNics(vspId, version, componentId, user); - if (CollectionUtils.isNotEmpty(componentNics)) { - vspComponentNics.put(componentId, componentNics); - } - } - } - } - } - } - return vspComponentNics; - } - - private List getComponentNics(String vspId, Version version, String componentId, - String user) { - List componentNics = new ArrayList<>(); - Collection nics = nicManager.listNics(vspId, version, componentId, user); - if (Objects.nonNull(nics)) { - for (NicEntity nicEntity : nics) { - String nicId = nicEntity.getId(); - CompositionEntityResponse nicCompositionEntityResponse = - nicManager.getNic(vspId, version, componentId, nicId, user); - if (Objects.nonNull(nicCompositionEntityResponse) - && Objects.nonNull(nicCompositionEntityResponse.getData())) { - componentNics.add(nicCompositionEntityResponse.getData()); - } - } - } - return componentNics; - } - - private LicenseFlavor getLicenseFlavor(String featureGroupId) { - LicenseFlavor licenseFlavor = new LicenseFlavor(); - licenseFlavor.setFeature_group_uuid(featureGroupId); - return licenseFlavor; - } - - private Optional getPartNumber(String vlmId, Version version, - String featureGroupId, String user) { - FeatureGroupModel featureGroup = getFeatureGroup(vlmId, version, featureGroupId, user); - if (Objects.nonNull(featureGroup)) { - return Optional.ofNullable(featureGroup.getFeatureGroup().getPartNumber()); - } - return Optional.empty(); - } - - private Optional getVendorInfo(String vlmId, Version version, - String featureGroupId, String user) { - VendorInfo vendorInfo = null; - FeatureGroupModel featureGroup = getFeatureGroup(vlmId, version, featureGroupId, user); - if (Objects.nonNull(featureGroup)) { - //Process Feature group to get Manufacturer ref no. - String manufacturerReferenceNumber = featureGroup.getEntityManufacturerReferenceNumber(); - vendorInfo = new VendorInfo(); - vendorInfo.setVendor_model(vlmId); - if (Objects.nonNull(manufacturerReferenceNumber)) { - vendorInfo.setManufacturer_reference_number(manufacturerReferenceNumber); - } - } - return Optional.ofNullable(vendorInfo); - } - - private Optional getComputeFlavor(String vspId, Version version, - String componentId, String computeFlavorId, - String user) { - ComputeFlavor computeFlavor = null; - QuestionnaireResponse computeQuestionnaire; - try { - computeQuestionnaire = computeManager.getComputeQuestionnaire(vspId, version, componentId, - computeFlavorId, user); - } catch (Exception ex) { - computeQuestionnaire = null; - } - if (Objects.nonNull(computeQuestionnaire)) { - String computeQuestionnaireData = computeQuestionnaire.getData(); - if (Objects.nonNull(computeQuestionnaireData)) { - Compute compute; - try { - compute = JsonUtil.json2Object(computeQuestionnaireData, Compute.class); - } catch (Exception ex) { - compute = null; - } - if (Objects.nonNull(compute.getVmSizing())) { - computeFlavor = new ComputeFlavor(); - if (Objects.nonNull(compute.getVmSizing().getNumOfCPUs())) { - computeFlavor.setNum_cpus(compute.getVmSizing().getNumOfCPUs()); - } - if (Objects.nonNull(compute.getVmSizing().getFileSystemSizeGB())) { - computeFlavor.setDisk_size(compute.getVmSizing().getFileSystemSizeGB() + "GB"); - } - if (Objects.nonNull(compute.getVmSizing().getMemoryRAM())) { - computeFlavor.setMem_size(compute.getVmSizing().getMemoryRAM() + "GB"); - } - } - } - } - return Optional.ofNullable(computeFlavor); - } - - private FeatureGroupModel getFeatureGroup(String vlmId, Version version, String featureGroupId, - String user) { - FeatureGroupEntity fgInput = new FeatureGroupEntity(); - fgInput.setVendorLicenseModelId(vlmId); - fgInput.setVersion(version); - fgInput.setId(featureGroupId); - return vendorLicenseFacade.getFeatureGroupModel(fgInput, user); - } - - private Optional getComponentName(String vspId, Version version, String componentId, - String user) { - CompositionEntityResponse component = - componentManager.getComponent(vspId, version, componentId, user); - if (Objects.nonNull(component.getData())) { - return Optional.ofNullable(component.getData().getDisplayName()); - } - return Optional.empty(); - } - - private List getComponentImages(String vspId, Version version, - String componentId, String user) { - List componentImages = new ArrayList<>(); - MultiFlavorVfcImage multiFlavorVfcImage = null; - Collection imageEntities = - imageManager.listImages(vspId, version, componentId, user); - if (Objects.nonNull(imageEntities)) { - for (ImageEntity imageEntity : imageEntities) { - String imageId = imageEntity.getId(); - QuestionnaireResponse imageQuestionnaire = - imageManager.getImageQuestionnaire(vspId, version, componentId, imageId, user); - CompositionEntityResponse imageCompositionData = - imageManager.getImage(vspId, version, componentId, imageId, user); - if (Objects.nonNull(imageQuestionnaire) - && Objects.nonNull(imageQuestionnaire.getData()) - && Objects.nonNull(imageCompositionData)) { - ImageDetails imageDetails; - try { - imageDetails = JsonUtil.json2Object(imageQuestionnaire.getData(), - ImageDetails.class); - } catch (Exception ex) { - imageDetails = null; - } - if (Objects.nonNull(imageDetails) - && Objects.nonNull(imageDetails.getVersion())) { - //Image version is used as a key for the image block - //So excluding the population if questionnaire data is absent or invalid - multiFlavorVfcImage = new MultiFlavorVfcImage(); - Image image = imageCompositionData.getData(); - Optional toscaImageFileName = getToscaImageFileName(image, imageDetails); - toscaImageFileName.ifPresent(multiFlavorVfcImage::setFile_name); - multiFlavorVfcImage.setSoftware_version(imageDetails.getVersion()); - if (Objects.nonNull(imageDetails.getMd5())) { - multiFlavorVfcImage.setFile_hash(imageDetails.getMd5()); - } - multiFlavorVfcImage.setFile_hash_type("md5"); - componentImages.add(multiFlavorVfcImage); - } - } - } - } - return componentImages; - } - - private Optional getToscaImageFileName(Image image, ImageDetails imageDetails) { - String toscaImageFileName = null; - StringBuilder builder = new StringBuilder(); - if (Objects.nonNull(image.getFileName())) { - builder.append(image.getFileName()); - builder.append("-"); - builder.append(imageDetails.getVersion()); - if (Objects.nonNull(imageDetails.getFormat())) { - builder.append("."); - builder.append(imageDetails.getFormat()); - } - } - toscaImageFileName = builder.toString(); - if (toscaImageFileName.isEmpty()) { - return Optional.empty(); - } - return Optional.ofNullable(toscaImageFileName); - } -} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java index c8f473c8c7..103762c56d 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComputeManagerImplTest.java @@ -140,11 +140,12 @@ public class ComputeManagerImplTest { } @Test - public void testCreateManualImageWithDuplicateName() { + public void testCreateManualComputeWithDuplicateName() { ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); ComputeEntity expectedDiffName = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); + expectedDiffName.setId(COMPUTE1_ID + "Name"); ComputeData computeData = expectedDiffName.getComputeCompositionData(); computeData.setName(COMPUTE1_ID + "Name"); expectedDiffName.setComputeCompositionData(computeData); @@ -162,6 +163,28 @@ public class ComputeManagerImplTest { } } + @Test + public void testCreateManualComputeWithIncorrectNameFormat() { + ComputeEntity expected = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + ComputeEntity expectedDiffName = createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); + ComputeData computeData = expectedDiffName.getComputeCompositionData(); + computeData.setName(COMPUTE1_ID + "Name/*"); + expectedDiffName.setComputeCompositionData(computeData); + List vfcImageList = new ArrayList(); + vfcImageList.add(expectedDiffName); + doReturn(vfcImageList).when(computeDao).list(anyObject()); + + try { + computeManager.createCompute(expectedDiffName, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.COMPUTE_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } @Test public void testUpdateNonExistingComputeId_negative() { @@ -191,6 +214,33 @@ public class ComputeManagerImplTest { verify(computeDao).update(computeEntity); } + @Test + public void testUpdateComputeWithIncorrectNameFormat() { + doReturn(createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID)) + .when(computeDao).get(anyObject()); + + doReturn(new CompositionEntityValidationData(CompositionEntityType.compute, COMPUTE1_ID)) + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); + + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); + ComputeData computeData = new ComputeData(); + computeData.setName(COMPUTE1_ID + "name/*"); + computeData.setDescription(COMPUTE1_ID + "desc updated"); + computeEntity.setComputeCompositionData(computeData); + + try { + computeManager.updateCompute(computeEntity, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.COMPUTE_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } + @Test public void testIllegalComputeUpdate() { doReturn(createCompute(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID)) @@ -207,7 +257,7 @@ public class ComputeManagerImplTest { ComputeEntity computeEntity = new ComputeEntity(VSP_ID, VERSION, COMPONENT_ID, COMPUTE1_ID); ComputeData computeData = new ComputeData(); - computeData.setName(COMPUTE1_ID + " name updated"); + computeData.setName(COMPUTE1_ID + "_name_updated"); computeData.setDescription(COMPUTE1_ID + " desc updated"); computeEntity.setComputeCompositionData(computeData); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeplomentFlavorManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeplomentFlavorManagerImplTest.java index e082b25435..598b97b34e 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeplomentFlavorManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/DeplomentFlavorManagerImplTest.java @@ -22,8 +22,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductErrorCodes; import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager; import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse; -import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Component; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentComputeAssociation; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData; @@ -99,7 +97,7 @@ public class DeplomentFlavorManagerImplTest { DeploymentFlavorEntity expectedDiffName = createDeploymentFlavor(VSP_ID, VERSION, DF1_ID); DeploymentFlavor deploymentFlavor = expectedDiffName.getDeploymentFlavorCompositionData(); - deploymentFlavor.setModel(DF1_ID + " Name"); + deploymentFlavor.setModel(DF1_ID + "Name"); expectedDiffName.setDeploymentFlavorCompositionData(deploymentFlavor); List list = new ArrayList(); list.add(expectedDiffName); @@ -115,6 +113,28 @@ public class DeplomentFlavorManagerImplTest { } } + @Test + public void testCreateManualDepFlavorWithIncorrectNameFormat() { + DeploymentFlavorEntity expected = createDeploymentFlavor(VSP_ID, VERSION, DF1_ID); + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + DeploymentFlavorEntity expectedDiffName = createDeploymentFlavor(VSP_ID, VERSION, DF1_ID); + DeploymentFlavor deploymentFlavor = expectedDiffName.getDeploymentFlavorCompositionData(); + deploymentFlavor.setModel(DF1_ID + "Name/*"); + expectedDiffName.setDeploymentFlavorCompositionData(deploymentFlavor); + List list = new ArrayList(); + list.add(expectedDiffName); + doReturn(list).when(deploymentFlavorDaoMock).list(anyObject()); + + try { + deploymentFlavorManager.createDeploymentFlavor(expectedDiffName, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.DEPLOYMENT_FLAVOR_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } @Test public void testCreateManualDepFlavorWithFGNotInVSP() { DeploymentFlavorEntity expected = createDeploymentFlavor(VSP_ID, VERSION, DF1_ID); @@ -253,7 +273,7 @@ public class DeplomentFlavorManagerImplTest { Assert.assertEquals(deploymentFlavorEntities.size(), 2); for (DeploymentFlavorEntity deploymentFlavorEntity : deploymentFlavorEntities) { Assert.assertEquals(deploymentFlavorEntity.getDeploymentFlavorCompositionData().getModel() - , DF1_ID.equals(deploymentFlavorEntity.getId()) ? DF1_ID+" name" : DF2_ID+" name" ); + , DF1_ID.equals(deploymentFlavorEntity.getId()) ? DF1_ID+"name" : DF2_ID+"name" ); } } @@ -286,7 +306,7 @@ public class DeplomentFlavorManagerImplTest { DeploymentFlavorEntity deploymentFlavorEntity = new DeploymentFlavorEntity(VSP_ID, VERSION, DF1_ID); DeploymentFlavor deploymentFlavor = new DeploymentFlavor(); - deploymentFlavor.setModel(DF1_ID + " name"); + deploymentFlavor.setModel(DF1_ID + "_name"); deploymentFlavor.setDescription(DF1_ID + " desc updated"); deploymentFlavorEntity.setDeploymentFlavorCompositionData(deploymentFlavor); @@ -296,6 +316,36 @@ public class DeplomentFlavorManagerImplTest { verify(deploymentFlavorDaoMock).update(deploymentFlavorEntity); } + @Test + public void testManualUpdateDepFlavorIncorrectNameFormat() { + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + doReturn(createDeploymentFlavor(VSP_ID, VERSION, DF1_ID)) + .when(deploymentFlavorDaoMock).get(anyObject()); + + doReturn(new CompositionEntityValidationData(CompositionEntityType.image, DF1_ID)) + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); + + VspDetails vspDetails = new VspDetails(VSP_ID, VERSION); + doReturn(vspDetails).when(vspInfoDao).get(anyObject()); + + DeploymentFlavorEntity deploymentFlavorEntity = new DeploymentFlavorEntity(VSP_ID, VERSION, DF1_ID); + DeploymentFlavor deploymentFlavor = new DeploymentFlavor(); + deploymentFlavor.setModel(DF1_ID + "_name/*"); + deploymentFlavor.setDescription(DF1_ID + " desc updated"); + deploymentFlavorEntity.setDeploymentFlavorCompositionData(deploymentFlavor); + + try { + deploymentFlavorManager.updateDeploymentFlavor(deploymentFlavorEntity, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.DEPLOYMENT_FLAVOR_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } + @Test public void testGetNonExistingDepFlavorId_negative() { testGet_negative(VSP_ID, VERSION, "non existing image id", USER, @@ -378,7 +428,7 @@ public class DeplomentFlavorManagerImplTest { DeploymentFlavorEntity deploymentFlavorEntity = new DeploymentFlavorEntity(vspId, version, deploymentFlavorId); DeploymentFlavor deploymentFlavor = new DeploymentFlavor(); - deploymentFlavor.setModel(deploymentFlavorId + " name"); + deploymentFlavor.setModel(deploymentFlavorId + "name"); deploymentFlavor.setDescription(deploymentFlavorId + " desc"); deploymentFlavorEntity.setDeploymentFlavorCompositionData(deploymentFlavor); @@ -388,8 +438,12 @@ public class DeplomentFlavorManagerImplTest { private void testUpdate_negative(String vspId, Version version, String deploymentFlavorId, String user, String expectedErrorCode) { try { + DeploymentFlavorEntity deploymentFlavorEntity = new DeploymentFlavorEntity(vspId, version, deploymentFlavorId); + DeploymentFlavor deploymentFlavor = new DeploymentFlavor(); + deploymentFlavor.setModel("Name"); + deploymentFlavorEntity.setDeploymentFlavorCompositionData(deploymentFlavor); deploymentFlavorManager - .updateDeploymentFlavor(new DeploymentFlavorEntity(vspId, version, deploymentFlavorId), user); + .updateDeploymentFlavor(deploymentFlavorEntity, user); Assert.fail(); } catch (CoreException exception) { Assert.assertEquals(exception.code().id(), expectedErrorCode); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java index ec676e517b..c29cb42953 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ImageManagerImplTest.java @@ -84,7 +84,7 @@ public class ImageManagerImplTest { Assert.assertEquals(images.size(), 2); for (ImageEntity image : images) { Assert.assertEquals(image.getImageCompositionData().getFileName(), - IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+" name" : IMAGE2_ID+" name" ); + IMAGE1_ID.equals(image.getId()) ? IMAGE1_ID+"_name" : IMAGE2_ID+"_name" ); } } @@ -104,6 +104,28 @@ public class ImageManagerImplTest { verify(compositionEntityDataManagerMock).createImage(expected); } + @Test + public void testCreateManualImageWithIncorrectNameFormat() { + ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + ImageEntity expectedDiffName = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); + Image image = expectedDiffName.getImageCompositionData(); + image.setFileName(IMAGE1_ID + " Name*/"); + expectedDiffName.setImageCompositionData(image); + List vfcImageList = new ArrayList(); + vfcImageList.add(expectedDiffName); + doReturn(vfcImageList).when(imageDao).list(anyObject()); + try { + imageManager.createImage(expectedDiffName, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.IMAGE_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } + @Test public void testCreateManualImageWithDuplicateName() { ImageEntity expected = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); @@ -111,7 +133,7 @@ public class ImageManagerImplTest { ImageEntity expectedDiffName = createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image image = expectedDiffName.getImageCompositionData(); - image.setFileName(IMAGE1_ID + " Name"); + image.setFileName(IMAGE1_ID + "_Name"); expectedDiffName.setImageCompositionData(image); List vfcImageList = new ArrayList(); vfcImageList.add(expectedDiffName); @@ -143,7 +165,7 @@ public class ImageManagerImplTest { ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image imageData = new Image(); - imageData.setFileName(IMAGE1_ID + " name"); + imageData.setFileName(IMAGE1_ID + "_name"); imageData.setDescription(IMAGE1_ID + " desc updated"); imageEntity.setImageCompositionData(imageData); @@ -153,6 +175,33 @@ public class ImageManagerImplTest { verify(imageDao).update(imageEntity); } + @Test + public void testUpdateImageWithIncorrectNameFormat() { + doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID)) + .when(imageDao).get(anyObject()); + + doReturn(new CompositionEntityValidationData(CompositionEntityType.image, IMAGE1_ID)) + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); + + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); + Image imageData = new Image(); + imageData.setFileName(IMAGE1_ID + "name/*"); + imageData.setDescription(IMAGE1_ID + " desc updated"); + imageEntity.setImageCompositionData(imageData); + + try { + imageManager.updateImage(imageEntity, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.IMAGE_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } + @Test public void testIllegalImageUpdate() { doReturn(createImage(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID)) @@ -169,7 +218,7 @@ public class ImageManagerImplTest { ImageEntity imageEntity = new ImageEntity(VSP_ID, VERSION, COMPONENT_ID, IMAGE1_ID); Image imageData = new Image(); - imageData.setFileName(IMAGE1_ID + " name updated"); + imageData.setFileName(IMAGE1_ID + "_name_updated"); imageData.setDescription(IMAGE1_ID + " desc updated"); imageEntity.setImageCompositionData(imageData); @@ -345,7 +394,7 @@ public class ImageManagerImplTest { static ImageEntity createImage(String vspId, Version version, String compId, String imageId) { ImageEntity imageEntity = new ImageEntity(vspId, version, compId, imageId); Image imageData = new Image(); - imageData.setFileName(imageId + " name"); + imageData.setFileName(imageId + "_name"); imageData.setDescription(imageId + " desc"); imageEntity.setImageCompositionData(imageData); return imageEntity; diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImplTest.java index 4bbbec166e..8ea853c5fa 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ManualVspToscaManagerImplTest.java @@ -1,6 +1,9 @@ package org.openecomp.sdc.vendorsoftwareproduct.impl; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; import static org.openecomp.sdc.generator.util.GeneratorConstants.ALLOWED_FLAVORS_PROPERTY; +import static org.openecomp.sdc.generator.util.GeneratorConstants.IMAGES_PROPERTY; import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX; import static org.openecomp.sdc.tosca.services.ToscaConstants.BINDING_REQUIREMENT_ID; import static org.openecomp.sdc.tosca.services.ToscaConstants.COUNT_PROPERTY_NAME; @@ -10,6 +13,10 @@ import static org.openecomp.sdc.translator.services.heattotosca.Constants.GLOBAL import org.junit.Assert; import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; import org.openecomp.sdc.generator.core.utils.GeneratorUtils; import org.openecomp.sdc.generator.datatypes.tosca.ComputeFlavor; import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel; @@ -36,43 +43,112 @@ import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager; import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic; +import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService; +import org.openecomp.sdc.versioning.dao.types.Version; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; public class ManualVspToscaManagerImplTest { + private static final String USER = "manualVspToscaTestUser"; + private static final String INVALID_VSP_ID = "Invalid_Vsp_Id"; + private static final String VSP_ID = "Vsp_Id_1"; + private static final String VSP_VERSION = "1.0"; + + private static final String RELEASE_VENDOR = "Vendor-1"; private static final String COMPONENT_ID = "Component_id"; private static final String COMPONENT_NAME = "Component_name"; private static final String SP_PART_NUMBER_1 = "Part_number_123"; private static final String FEATURE_GROUP_ID_1 = "Feature_Group_id_1"; private static final String MANUFACTURER_REF_1 = "Manufacturer_Ref_1"; - private static final String VENDOR_MODEL_1 = "VLM_1"; + private static final String VENDOR_MODEL_1 = "Deployment_Flavor_Model_1"; private static final int NUM_CPUS_1 = 1; - private static final String DISK_SIZE_1 = "2GB"; - private static final String MEM_SIZE_1 = "8GB"; + private static final String DISK_SIZE_1 = "2 GB"; + private static final String MEM_SIZE_1 = "8 GB"; private static final String SP_PART_NUMBER_2 = "Part_number_345"; private static final String FEATURE_GROUP_ID_2 = "Feature_Group_id_2"; private static final String MANUFACTURER_REF_2 = "Manufacturer_Ref_2"; - private static final String VENDOR_MODEL_2 = "VLM_2"; + private static final String VENDOR_MODEL_2 = "Deployment_Flavor_Model_2"; private static final int NUM_CPUS_2 = 4; - private static final String DISK_SIZE_2 = "3GB"; - private static final String MEM_SIZE_2 = "2GB"; + private static final String DISK_SIZE_2 = "3 GB"; + private static final String MEM_SIZE_2 = "2 GB"; private static final String IMAGE_VERSION_1 = "3.16.1"; private static final String IMAGE_HASH_1 = "65edfgye3256hjutve"; private static final String IMAGE_FILE_NAME_1 = "image-file-name1"; - private static final String IMAGE_FILE_FORMAT_1 = "qcow2"; private static final String IMAGE_VERSION_2 = "3.1.9"; private static final String IMAGE_HASH_2 = "84rtedfe3256hjutaw"; private static final String IMAGE_FILE_NAME_2 = "image-file-name1"; - private static final String IMAGE_FILE_FORMAT_2 = "iso"; private ManualVspToscaManager manualVspToscaManager = new ManualVspToscaManagerImpl(); + @Spy + @InjectMocks + private ManualVspToscaManagerImpl manualVspToscaManagerMock; + + @Mock + private ManualVspDataCollectionService manualVspDataCollectionServiceMock; + + @Test + public void testGatherVspInformationInvalidVsp() { + MockitoAnnotations.initMocks(this); + VspModelInfo expectedVspData = new VspModelInfo(); + doThrow(new RuntimeException()) + .when(manualVspDataCollectionServiceMock) + .getReleaseVendor(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER); + doThrow(new RuntimeException()) + .when(manualVspDataCollectionServiceMock) + .getAllowedFlavors(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER); + doThrow(new RuntimeException()) + .when(manualVspDataCollectionServiceMock) + .getVspComponentImages(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER); + doThrow(new RuntimeException()) + .when(manualVspDataCollectionServiceMock) + .getVspComponents(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER); + doThrow(new RuntimeException()) + .when(manualVspDataCollectionServiceMock) + .getVspComponentNics(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER); + VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(INVALID_VSP_ID, + Version.valueOf(VSP_VERSION), USER); + Assert.assertEquals(expectedVspData, vspModelInfo); + } + + + @Test + public void testGatherVspInformationValidVsp() { + MockitoAnnotations.initMocks(this); + Map deploymentFlavorData = getDeploymentFlavorData(); + Map> componentNics = getComponentNics(); + Map componentData = getComponentData(); + Map> vfcImageData = getVfcImageData(); + doReturn(Optional.of(RELEASE_VENDOR)).when(manualVspDataCollectionServiceMock) + .getReleaseVendor(VSP_ID, Version.valueOf(VSP_VERSION), USER); + doReturn(deploymentFlavorData).when(manualVspDataCollectionServiceMock) + .getAllowedFlavors(VSP_ID, Version.valueOf(VSP_VERSION), USER); + doReturn(vfcImageData).when(manualVspDataCollectionServiceMock) + .getVspComponentImages(VSP_ID, Version.valueOf(VSP_VERSION), USER); + doReturn(componentData).when(manualVspDataCollectionServiceMock) + .getVspComponents(VSP_ID, Version.valueOf(VSP_VERSION), USER); + doReturn(componentNics).when(manualVspDataCollectionServiceMock) + .getVspComponentNics(VSP_ID, Version.valueOf(VSP_VERSION), USER); + VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(VSP_ID, + Version.valueOf(VSP_VERSION), USER); + + VspModelInfo expectedVspData = new VspModelInfo(); + expectedVspData.setReleaseVendor(RELEASE_VENDOR); + expectedVspData.setComponents(getComponentData()); + expectedVspData.setMultiFlavorVfcImages(getVfcImageData()); + expectedVspData.setAllowedFlavors(getDeploymentFlavorData()); + expectedVspData.setNics(getComponentNics()); + + Assert.assertEquals(expectedVspData, vspModelInfo); + } + @Test public void testGenerateToscaInvalidVspId() { VspModelInfo emptyVspCollectedData = new VspModelInfo(); @@ -87,7 +163,7 @@ public class ManualVspToscaManagerImplTest { @Test public void testGenerateToscaNoComponent() { VspModelInfo vspCollectedData = new VspModelInfo(); - vspCollectedData.setReleaseVendor("Vendor-1"); + vspCollectedData.setReleaseVendor(RELEASE_VENDOR); vspCollectedData.setComponents(null); vspCollectedData.setMultiFlavorVfcImages(null); vspCollectedData.setAllowedFlavors(getDeploymentFlavorData()); @@ -111,7 +187,6 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate(); @@ -131,7 +206,6 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate(); @@ -139,8 +213,8 @@ public class ManualVspToscaManagerImplTest { Assert.assertNotNull(mainServiceTemplate); String componentName = vspCollectedData.getComponents().get(COMPONENT_ID); Assert.assertNull(mainServiceTemplate.getTopology_template().getNode_templates() - .get(componentName + GeneratorConstants.VFC_NODE_TEMPLATE_ID_SUFFIX) - .getProperties()); + .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX) + .getProperties().get(IMAGES_PROPERTY)); } @Test @@ -154,7 +228,6 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String componentName = vspCollectedData.getComponents().get(COMPONENT_ID); @@ -171,7 +244,7 @@ public class ManualVspToscaManagerImplTest { @Test public void testGenerateToscaNoManufacturerRefNumAndFeatureGroup() { VspModelInfo vspCollectedData = new VspModelInfo(); - vspCollectedData.setReleaseVendor("Vendor-1"); + vspCollectedData.setReleaseVendor(RELEASE_VENDOR); vspCollectedData.setComponents(getComponentData()); vspCollectedData.setMultiFlavorVfcImages(getVfcImageData()); Map deploymentFlavorData = getDeploymentFlavorData(); @@ -184,7 +257,6 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate(); @@ -204,7 +276,7 @@ public class ManualVspToscaManagerImplTest { @Test public void testGenerateToscaNoDeploymentFlavor() { VspModelInfo vspCollectedData = new VspModelInfo(); - vspCollectedData.setReleaseVendor("Vendor-1"); + vspCollectedData.setReleaseVendor(RELEASE_VENDOR); vspCollectedData.setComponents(getComponentData()); vspCollectedData.setMultiFlavorVfcImages(getVfcImageData()); vspCollectedData.setAllowedFlavors(null); @@ -213,7 +285,6 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate(); @@ -228,7 +299,7 @@ public class ManualVspToscaManagerImplTest { @Test public void testGenerateToscaCompleteData() { VspModelInfo vspCollectedData = new VspModelInfo(); - vspCollectedData.setReleaseVendor("Vendor-1"); + vspCollectedData.setReleaseVendor(RELEASE_VENDOR); vspCollectedData.setComponents(getComponentData()); vspCollectedData.setMultiFlavorVfcImages(getVfcImageData()); vspCollectedData.setAllowedFlavors(getDeploymentFlavorData()); @@ -237,31 +308,23 @@ public class ManualVspToscaManagerImplTest { manualVspToscaManager.generateToscaModel(vspCollectedData); Assert.assertNotNull(toscaServiceModel); Assert.assertNotNull(toscaServiceModel.getServiceTemplates()); - //Service model should contain only the packed global types Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size()); Map serviceTemplates = toscaServiceModel.getServiceTemplates(); String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate(); ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate); Assert.assertNotNull(mainServiceTemplate); String componentName = vspCollectedData.getComponents().get(COMPONENT_ID); - - Assert.assertNotNull(mainServiceTemplate.getTopology_template().getNode_templates() - .get(componentName + GeneratorConstants.VFC_NODE_TEMPLATE_ID_SUFFIX)); Assert.assertNotNull(mainServiceTemplate.getTopology_template().getNode_templates() .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX)); //Validate vnf configuration node template validateVnfConfigurationNodeTemplate(mainServiceTemplate, componentName); - //Validate vfc node template - validateVfcNodeTemplateinMainServiceTemplate(mainServiceTemplate, componentName); //Validate vnf node template validateVnfNodeTemplate(mainServiceTemplate, componentName); - //Validate substitution service template ServiceTemplate substitutionServiceTemplate = toscaServiceModel.getServiceTemplates() .get(componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX); List nics = vspCollectedData.getNics().get(COMPONENT_ID); validateSubstitutionServiceTemplate(substitutionServiceTemplate, nics, componentName); - //Validate global substitution service template ServiceTemplate globalSubstitutionServiceTemplate = toscaServiceModel.getServiceTemplates() .get(ToscaUtil.getServiceTemplateFileName(GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME)); @@ -284,24 +347,18 @@ public class ManualVspToscaManagerImplTest { Assert.assertEquals(deploymentFlavorData, allowedFlavors); } - private void validateVfcNodeTemplateinMainServiceTemplate(ServiceTemplate mainServiceTemplate, - String componentName) { - NodeTemplate vfcNodeTemplate = - mainServiceTemplate.getTopology_template().getNode_templates() - .get(componentName + GeneratorConstants.VFC_NODE_TEMPLATE_ID_SUFFIX); - Assert.assertNotNull(vfcNodeTemplate); - Assert.assertEquals(ToscaNodeType.MULTIFLAVOR_VFC_NODE_TYPE, vfcNodeTemplate.getType()); + private void validateImagePropertyData(NodeTemplate vnfNodeTemplate, String componentName) { Map vfcImages = (Map) - vfcNodeTemplate.getProperties().get(GeneratorConstants.IMAGES_PROPERTY); + vnfNodeTemplate.getProperties().get(GeneratorConstants.IMAGES_PROPERTY); Assert.assertNotNull(vfcImages); Assert.assertEquals(2, vfcImages.size()); MultiFlavorVfcImage image1 = vfcImages.get(IMAGE_VERSION_1); MultiFlavorVfcImage expectedImage1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1, - IMAGE_FILE_NAME_1, "md5", IMAGE_FILE_FORMAT_1); + IMAGE_FILE_NAME_1, "md5"); Assert.assertEquals(expectedImage1, image1); MultiFlavorVfcImage image2 = vfcImages.get(IMAGE_VERSION_2); MultiFlavorVfcImage expectedImage2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2, - IMAGE_FILE_NAME_2, "md5", IMAGE_FILE_FORMAT_2); + IMAGE_FILE_NAME_2, "md5"); Assert.assertEquals(expectedImage2, image2); } @@ -311,12 +368,11 @@ public class ManualVspToscaManagerImplTest { mainServiceTemplate.getTopology_template().getNode_templates() .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX); Assert.assertNotNull(vnfNodeTemplate); - Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE + "." + componentName, - vnfNodeTemplate.getType()); + Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, vnfNodeTemplate.getType()); Assert.assertNotNull(vnfNodeTemplate.getDirectives()); Assert.assertEquals(true, vnfNodeTemplate.getDirectives().contains(ToscaConstants .NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE)); - + validateImagePropertyData(vnfNodeTemplate, componentName); Map serviceTemplateFilterProperty = (Map) vnfNodeTemplate .getProperties().get(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); Assert.assertNotNull(serviceTemplateFilterProperty); @@ -372,8 +428,8 @@ public class ManualVspToscaManagerImplTest { private void validateSubstitutionMappings(SubstitutionMapping substitutionMappings, List nics, String componentName) { - Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE + "." + componentName, - substitutionMappings.getNode_type()); + Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, substitutionMappings + .getNode_type()); Map> capabilities = substitutionMappings.getCapabilities(); validateSubstitutionCapabilities(capabilities, componentName); Map> requirements = substitutionMappings.getRequirements(); @@ -420,7 +476,7 @@ public class ManualVspToscaManagerImplTest { Map nodeTypes = globalSubstitutionServiceTemplate.getNode_types(); Assert.assertEquals(1, nodeTypes.size()); NodeType deploymentFlavorNodeType = - nodeTypes.get(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE + "." + componentName); + nodeTypes.get(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE); Assert.assertNotNull(deploymentFlavorNodeType); Map properties = deploymentFlavorNodeType.getProperties(); Assert.assertNotNull(properties); @@ -475,9 +531,9 @@ public class ManualVspToscaManagerImplTest { Map> imageData = new HashMap<>(); List images = new ArrayList<>(2); MultiFlavorVfcImage image1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1, IMAGE_FILE_NAME_1, - "md5", IMAGE_FILE_FORMAT_1); + "md5"); MultiFlavorVfcImage image2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2, IMAGE_FILE_NAME_2, - "md5", IMAGE_FILE_FORMAT_2); + "md5"); images.add(image1); images.add(image2); imageData.put(COMPONENT_ID, images); @@ -522,10 +578,10 @@ public class ManualVspToscaManagerImplTest { return computeFlavor; } - private VendorInfo getVendorInfo(String manufacturerRefNumber, String vlmId) { + private VendorInfo getVendorInfo(String manufacturerRefNumber, String deploymentFlavorModel) { VendorInfo vendorInfo = new VendorInfo(); vendorInfo.setManufacturer_reference_number(manufacturerRefNumber); - vendorInfo.setVendor_model(vlmId); + vendorInfo.setVendor_model(deploymentFlavorModel); return vendorInfo; } @@ -535,13 +591,13 @@ public class ManualVspToscaManagerImplTest { return licenseFlavor; } - private MultiFlavorVfcImage getImageData(String imageVersion, String fileHash, String fileName, - String fileHashType, String fileFormat) { + private MultiFlavorVfcImage getImageData(String imageVersion, String fileHash, + String fileName, String fileHashType) { MultiFlavorVfcImage image = new MultiFlavorVfcImage(); image.setSoftware_version(imageVersion); image.setFile_hash(fileHash); image.setFile_hash_type(fileHashType); - image.setFile_name(fileName+"-"+IMAGE_VERSION_2+"."+fileFormat); + image.setFile_name(fileName); return image; } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java index b2cfba7672..fe275e9d68 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/NicManagerImplTest.java @@ -109,6 +109,31 @@ public class NicManagerImplTest { Assert.assertNotNull(created); } + @Test + public void testCreateWithIncorrectNicNameFormat() { + NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID); + Nic nic = nicEntity.getNicCompositionData(); + nic.setNetworkType(NetworkType.Internal); + nicEntity.setNicCompositionData(nic); + doReturn(true).when(vspInfoDao).isManual(anyObject(),anyObject()); + Collection nicEntities = new ArrayList<>(); + + NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID); + Nic newNameNic = nicEntityDiffName.getNicCompositionData(); + newNameNic.setName(NIC1_ID + "_Name/*"); + nicEntityDiffName.setNicCompositionData(newNameNic); + nicEntities.add(nicEntityDiffName); + doReturn(nicEntities).when(nicDao).list(anyObject()); + doReturn(nicEntity).when(compositionEntityDataManagerMock).createNic(anyObject()); + + try { + NicEntity created = nicManager.createNic(nicEntity,USER); + } catch (CoreException exception) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED, + exception.code().id()); + } + } + @Test public void testCreateWithDupNicName() { NicEntity nicEntity = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID); @@ -120,7 +145,7 @@ public class NicManagerImplTest { NicEntity nicEntityDiffName = createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID); Nic newNameNic = nicEntityDiffName.getNicCompositionData(); - newNameNic.setName(NIC1_ID + " Name"); + newNameNic.setName(NIC1_ID + "_Name"); nicEntityDiffName.setNicCompositionData(newNameNic); nicEntities.add(nicEntityDiffName); doReturn(nicEntities).when(nicDao).list(anyObject()); @@ -282,7 +307,7 @@ public class NicManagerImplTest { NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID); Nic nicData = new Nic(); - nicData.setName(NIC1_ID + " name updated"); + nicData.setName(NIC1_ID + "_name_updated"); nicData.setDescription(NIC1_ID + " desc updated"); nicData.setNetworkId(NETWORK1_ID); nicEntity.setNicCompositionData(nicData); @@ -294,6 +319,36 @@ public class NicManagerImplTest { verify(nicDao, never()).update(nicEntity); } + @Test + public void testUpdateIncorrectNameFormat() { + doReturn(createNic(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID, NETWORK1_ID)) + .when(nicDao).get(anyObject()); + + CompositionEntityValidationData toBeReturned = + new CompositionEntityValidationData(CompositionEntityType.nic, NIC1_ID); + toBeReturned.setErrors(Arrays.asList("error1", "error2")); + doReturn(toBeReturned) + .when(compositionEntityDataManagerMock) + .validateEntity(anyObject(), anyObject(), anyObject()); + doReturn(true).when(vspInfoDao).isManual(anyObject(), anyObject()); + + NicEntity nicEntity = new NicEntity(VSP_ID, VERSION, COMPONENT_ID, NIC1_ID); + Nic nicData = new Nic(); + nicData.setName(NIC1_ID + "_name_updated/*"); + nicData.setDescription(NIC1_ID + " desc updated"); + nicData.setNetworkId(NETWORK1_ID); + nicEntity.setNicCompositionData(nicData); + + try { + nicManager.updateNic(nicEntity, USER); + Assert.fail(); + } + catch (CoreException ex) { + Assert.assertEquals(VendorSoftwareProductErrorCodes.NIC_NAME_FORMAT_NOT_ALLOWED, + ex.code().id()); + } + } + @Test public void testGetNonExistingNicId_negative() { @@ -426,7 +481,7 @@ public class NicManagerImplTest { String networkId) { NicEntity nicEntity = new NicEntity(vspId, version, compId, nicId); Nic nicData = new Nic(); - nicData.setName(nicId + " name"); + nicData.setName(nicId + "_name"); nicData.setDescription(nicId + " desc"); nicData.setNetworkId(networkId); nicEntity.setNicCompositionData(nicData); diff --git a/openecomp-be/backend/pom.xml.versionsBackup b/openecomp-be/backend/pom.xml.versionsBackup deleted file mode 100644 index 15ac71b64d..0000000000 --- a/openecomp-be/backend/pom.xml.versionsBackup +++ /dev/null @@ -1,26 +0,0 @@ - - - 4.0.0 - - - openecomp-sdc - org.openecomp.sdc - 1.0-SNAPSHOT - - - org.openecomp.sdc - backend - pom - - - openecomp-sdc-vendor-license-manager - openecomp-sdc-vendor-software-product-manager - openecomp-sdc-validation-manager - openecomp-sdc-action-manager - openecomp-sdc-application-config-manager - - - - -- cgit 1.2.3-korg