aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager
diff options
context:
space:
mode:
authorandre.schmid <andre.schmid@est.tech>2019-08-29 16:31:53 +0000
committerOfir Sonsino <ofir.sonsino@intl.att.com>2019-09-01 08:42:24 +0000
commit96908856dea9061161b2c324aa7b0eeb5d6e4fd5 (patch)
tree9faa162c2b55e78506a1fe4cf87ff1be8b6501bb /openecomp-be/backend/openecomp-sdc-vendor-software-product-manager
parentc1e9e72d0689f1188daf0c105e035bd16a0818f8 (diff)
Fix artifacts references in main TOSCA descriptor
During package conversion, artifacts can have their path changed. References for those artifacts inside the main TOSCA descriptor must be updated accordingly. Change-Id: Idcffb0724c20875ff1decebfec7c47605bfe20dc Issue-ID: SDC-2540 Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'openecomp-be/backend/openecomp-sdc-vendor-software-product-manager')
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java76
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java475
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/descriptor/MainServiceTemplate.yaml97
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNFWithNonMano.mf11
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPnfWithoutNonMano.mf (renamed from openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNF.mf)0
5 files changed, 276 insertions, 383 deletions
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 5d2fd518fa..4a44076e46 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
@@ -16,6 +16,31 @@
package org.openecomp.sdc.vendorsoftwareproduct.impl;
+import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.candidateDataNotProcessedOrAbortedErrorBuilder;
+import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.invalidProcessedCandidate;
+import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.vspMissingDeploymentFlavorErrorBuilder;
+
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.zip.ZipInputStream;
+import java.util.zip.ZipOutputStream;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -108,31 +133,6 @@ import org.openecomp.sdc.versioning.VersioningManagerFactory;
import org.openecomp.sdc.versioning.VersioningUtil;
import org.openecomp.sdc.versioning.dao.types.Version;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.candidateDataNotProcessedOrAbortedErrorBuilder;
-import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.invalidProcessedCandidate;
-import static org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder.vspMissingDeploymentFlavorErrorBuilder;
-
public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductManager {
private VspMergeDao vspMergeDao;
@@ -610,26 +610,28 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa
}
@Override
- public PackageInfo createPackage(String vspId, Version version) throws IOException {
- ToscaServiceModel toscaServiceModel = enrichedServiceModelDao.getServiceModel(vspId, version);
- VspDetails vspDetails = vspInfoDao.get(new VspDetails(vspId, version));
- Version vlmVersion = vspDetails.getVlmVersion();
+ public PackageInfo createPackage(final String vspId, final Version version) throws IOException {
+ final ToscaServiceModel toscaServiceModel = enrichedServiceModelDao.getServiceModel(vspId, version);
+ final VspDetails vspDetails = vspInfoDao.get(new VspDetails(vspId, version));
+ final Version vlmVersion = vspDetails.getVlmVersion();
if (vlmVersion != null) {
populateVersionsForVlm(vspDetails.getVendorId(), vlmVersion);
}
- PackageInfo packageInfo = createPackageInfo(vspDetails);
+ final PackageInfo packageInfo = createPackageInfo(vspDetails);
- ToscaFileOutputServiceCsarImpl toscaServiceTemplateServiceCsar =
+ final ToscaFileOutputServiceCsarImpl toscaServiceTemplateServiceCsar =
new ToscaFileOutputServiceCsarImpl();
- FileContentHandler licenseArtifacts = licenseArtifactsService
+ final FileContentHandler licenseArtifacts = licenseArtifactsService
.createLicenseArtifacts(vspDetails.getId(), vspDetails.getVendorId(), vlmVersion,
vspDetails.getFeatureGroups());
- ETSIService etsiService = new ETSIServiceImpl();
+ final ETSIService etsiService = new ETSIServiceImpl();
if (etsiService.isSol004WithToscaMetaDirectory(toscaServiceModel.getArtifactFiles())) {
- FileContentHandler handler = toscaServiceModel.getArtifactFiles();
- Manifest manifest = etsiService.getManifest(handler);
- etsiService.moveNonManoFileToArtifactFolder(handler, manifest);
- packageInfo.setResourceType(etsiService.getResourceType(manifest).name());
+ final FileContentHandler handler = toscaServiceModel.getArtifactFiles();
+ final Manifest manifest = etsiService.getManifest(handler);
+ final Optional<Map<String, Path>> fromToMovedPaths = etsiService.moveNonManoFileToArtifactFolder(handler);
+ fromToMovedPaths
+ .ifPresent(it -> etsiService.updateMainDescriptorPaths(toscaServiceModel, it));
+ packageInfo.setResourceType(etsiService.getResourceType(manifest).name());
}
packageInfo.setTranslatedFile(ByteBuffer.wrap(
toscaServiceTemplateServiceCsar.createOutputFile(toscaServiceModel, licenseArtifacts)));
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java
index 61732a8faa..fb1ab0306e 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImplTest.java
@@ -16,6 +16,32 @@
package org.openecomp.sdc.vendorsoftwareproduct.impl;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyObject;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.MAIN_SERVICE_TEMPLATE_MF_FILE_NAME;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ORIG_PATH_FILE_NAME;
+import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
import org.apache.commons.io.IOUtils;
import org.junit.After;
import org.junit.Assert;
@@ -27,19 +53,17 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
-import org.openecomp.core.enrichment.factory.EnrichmentManagerFactory;
-import org.openecomp.core.factory.impl.AbstractFactoryBase;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.onap.sdc.tosca.services.YamlUtil;
import org.openecomp.core.model.dao.EnrichedServiceModelDao;
import org.openecomp.core.model.dao.ServiceModelDao;
import org.openecomp.core.model.types.ServiceElement;
import org.openecomp.core.utilities.file.FileContentHandler;
-import org.openecomp.core.utilities.file.FileUtils;
import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
import org.openecomp.sdc.common.errors.CoreException;
import org.openecomp.sdc.common.errors.ErrorCategory;
import org.openecomp.sdc.common.errors.ErrorCode;
-import org.openecomp.sdc.common.errors.Messages;
import org.openecomp.sdc.healing.api.HealingManager;
import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
import org.openecomp.sdc.vendorlicense.facade.VendorLicenseFacade;
@@ -56,12 +80,9 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.PackageInfoDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.DeploymentFlavorEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateEntity;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.PackageInfo;
import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
-import org.openecomp.sdc.vendorsoftwareproduct.impl.mock.EnrichmentManagerFactoryImpl;
import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator;
-import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
import org.openecomp.sdc.vendorsoftwareproduct.types.composition.DeploymentFlavor;
import org.openecomp.sdc.versioning.ActionVersioningManager;
@@ -70,36 +91,6 @@ import org.openecomp.sdc.versioning.dao.types.VersionStatus;
import org.openecomp.sdc.versioning.types.VersionInfo;
import org.openecomp.sdc.versioning.types.VersionableEntityAction;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Optional;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyObject;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.MAIN_SERVICE_TEMPLATE_MF_FILE_NAME;
-import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME;
-
-
public class VendorSoftwareProductManagerImplTest {
@@ -135,12 +126,9 @@ public class VendorSoftwareProductManagerImplTest {
private ManualVspToscaManager manualVspToscaManager;
@Mock
private DeploymentFlavorDao deploymentFlavorDaoMock;
-
-
@Spy
@InjectMocks
private VendorSoftwareProductManagerImpl vendorSoftwareProductManager;
-
@Mock
private OrchestrationTemplateCandidateManager orchestrationTemplateCandidateManagerMock;
@Mock
@@ -161,30 +149,34 @@ public class VendorSoftwareProductManagerImplTest {
vendorSoftwareProductManager = null;
}
- @Test
- public void testCreatePackageEtsiVNF(){
- try(InputStream metadataInput = getClass().getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta");
- InputStream manifestInput = getClass().getResourceAsStream("/vspmanager.csar/manifest/ValidNonManoTosca.mf")) {
-
- FileContentHandler handler = new FileContentHandler();
- handler.addFile(TOSCA_META_PATH_FILE_NAME, IOUtils.toByteArray(metadataInput));
- handler.addFile(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME, IOUtils.toByteArray(manifestInput));
- ToscaServiceModel toscaMetadata = new ToscaServiceModel(handler, new HashMap<>(), "");
- when(enrichedServiceModelDaoMock.getServiceModel(any(), any())).thenReturn(toscaMetadata );
- VspDetails vsp =
- createVspDetails("0", new Version(), "Vsp_PNF", "Test-vsp-pnf", "vendorName", "esy", "icon",
- "category", "subCategory", "123", null);
- //want to avoid triggering populateVersionsForVlm method
- vsp.setVlmVersion(null);
-
- when(vspInfoDaoMock.get(any())).thenReturn(vsp);
- when(licenseArtifactsServiceMock.createLicenseArtifacts(any(),any(), any(), any())).thenReturn(new FileContentHandler());
- PackageInfo packageInfo = vendorSoftwareProductManager.createPackage("0", new Version());
- assertEquals(packageInfo.getResourceType(), ResourceTypeEnum.VF.name());
- } catch (IOException e) {
- fail();
+ @Test
+ public void testCreatePackageEtsiVNF() throws IOException {
+ try (
+ final InputStream metadataInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta");
+ final InputStream manifestInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/manifest/ValidNonManoTosca.mf")) {
+
+ final FileContentHandler handler = new FileContentHandler();
+ final byte[] metadataInputBytes = IOUtils.toByteArray(metadataInput);
+ handler.addFile(TOSCA_META_PATH_FILE_NAME, metadataInputBytes);
+ handler.addFile(TOSCA_META_ORIG_PATH_FILE_NAME, metadataInputBytes);
+ handler.addFile(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME, IOUtils.toByteArray(manifestInput));
+ final ToscaServiceModel toscaMetadata = new ToscaServiceModel(handler, new HashMap<>(), "");
+ when(enrichedServiceModelDaoMock.getServiceModel(any(), any())).thenReturn(toscaMetadata);
+ final VspDetails vsp =
+ createVspDetails("0", new Version(), "Vsp_PNF", "Test-vsp-pnf", "vendorName", "esy", "icon",
+ "category", "subCategory", "123", null);
+ //want to avoid triggering populateVersionsForVlm method
+ vsp.setVlmVersion(null);
+
+ when(vspInfoDaoMock.get(any())).thenReturn(vsp);
+ when(licenseArtifactsServiceMock.createLicenseArtifacts(any(), any(), any(), any()))
+ .thenReturn(new FileContentHandler());
+ final PackageInfo packageInfo = vendorSoftwareProductManager.createPackage("0", new Version());
+ assertEquals(packageInfo.getResourceType(), ResourceTypeEnum.VF.name());
+ }
}
- }
@Test(expected = IOException.class)
public void testCreatePackageEtsiNoManifest() throws IOException {
@@ -207,30 +199,82 @@ public class VendorSoftwareProductManagerImplTest {
}
}
- @Test
- public void testCreatePackageEtsiPNF(){
- try(InputStream metadataInput = getClass().getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta");
- InputStream manifestInput = getClass().getResourceAsStream("/vspmanager.csar/manifest/ValidNonManoToscaPNF.mf")) {
-
- FileContentHandler handler = new FileContentHandler();
- handler.addFile(TOSCA_META_PATH_FILE_NAME, IOUtils.toByteArray(metadataInput));
- handler.addFile(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME, IOUtils.toByteArray(manifestInput));
- ToscaServiceModel toscaMetadata = new ToscaServiceModel(handler, new HashMap<>(), "");
- when(enrichedServiceModelDaoMock.getServiceModel(any(), any())).thenReturn(toscaMetadata );
- VspDetails vsp =
- createVspDetails("0", new Version(), "Vsp_PNF", "Test-vsp-pnf", "vendorName", "esy", "icon",
- "category", "subCategory", "123", null);
- //want to avoid triggering populateVersionsForVlm method
- vsp.setVlmVersion(null);
+ @Test
+ public void testCreatePackageEtsiPnfWithoutNonMano() throws IOException {
+ try (
+ final InputStream metadataInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta");
+ final InputStream manifestInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/manifest/ValidNonManoToscaPnfWithoutNonMano.mf")) {
+
+ final FileContentHandler handler = new FileContentHandler();
+ final byte[] metadataInputBytes = IOUtils.toByteArray(metadataInput);
+ handler.addFile(TOSCA_META_ORIG_PATH_FILE_NAME, metadataInputBytes);
+ handler.addFile(TOSCA_META_PATH_FILE_NAME, metadataInputBytes);
+ handler.addFile(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME, IOUtils.toByteArray(manifestInput));
+ final ToscaServiceModel toscaMetadata = new ToscaServiceModel(handler, new HashMap<>(), "");
+ when(enrichedServiceModelDaoMock.getServiceModel(any(), any())).thenReturn(toscaMetadata);
+ final VspDetails vsp =
+ createVspDetails("0", new Version(), "Vsp_PNF", "Test-vsp-pnf", "vendorName", "esy", "icon",
+ "category", "subCategory", "123", null);
+ //want to avoid triggering populateVersionsForVlm method
+ vsp.setVlmVersion(null);
+
+ when(vspInfoDaoMock.get(any())).thenReturn(vsp);
+ when(licenseArtifactsServiceMock.createLicenseArtifacts(any(), any(), any(), any()))
+ .thenReturn(new FileContentHandler());
+ final PackageInfo packageInfo = vendorSoftwareProductManager.createPackage("0", new Version());
+ assertEquals(packageInfo.getResourceType(), ResourceTypeEnum.PNF.name());
+ }
+ }
- when(vspInfoDaoMock.get(any())).thenReturn(vsp);
- when(licenseArtifactsServiceMock.createLicenseArtifacts(any(),any(), any(), any())).thenReturn(new FileContentHandler());
- PackageInfo packageInfo = vendorSoftwareProductManager.createPackage("0", new Version());
- assertEquals(packageInfo.getResourceType(), ResourceTypeEnum.PNF.name());
- } catch (IOException e) {
- fail();
+ @Test
+ public void testCreatePackageEtsiPnfWithNonManoArtifacts() throws IOException {
+ try (
+ final InputStream metadataInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta");
+ final InputStream manifestInput = getClass()
+ .getResourceAsStream("/vspmanager.csar/manifest/ValidNonManoToscaPNFWithNonMano.mf");
+ final InputStream mainServiceTemplateYamlFile = getClass()
+ .getResourceAsStream("/vspmanager.csar/descriptor/MainServiceTemplate.yaml")) {
+
+ final FileContentHandler handler = new FileContentHandler();
+ handler.addFile(TOSCA_META_ORIG_PATH_FILE_NAME, IOUtils.toByteArray(metadataInput));
+ handler.addFile(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME, IOUtils.toByteArray(manifestInput));
+ handler.addFile("Deployment/ANOTHER/authorized_keys", "".getBytes());
+
+ final ServiceTemplate mainServiceTemplate = new YamlUtil()
+ .yamlToObject(mainServiceTemplateYamlFile, ServiceTemplate.class);
+ final String mainServiceTemplateName = "MainServiceTemplate.yaml";
+ final HashMap<String, ServiceTemplate> serviceTemplateMap = new HashMap<>();
+ serviceTemplateMap.put(mainServiceTemplateName, mainServiceTemplate);
+
+ final ToscaServiceModel toscaMetadata = new ToscaServiceModel(handler, serviceTemplateMap,
+ mainServiceTemplateName);
+ when(enrichedServiceModelDaoMock.getServiceModel(any(), any())).thenReturn(toscaMetadata);
+ final VspDetails vsp =
+ createVspDetails("0", new Version(), "Vsp_PNF", "Test-vsp-pnf", "vendorName", "esy", "icon",
+ "category", "subCategory", "123", null);
+ //want to avoid triggering populateVersionsForVlm method
+ vsp.setVlmVersion(null);
+
+ when(vspInfoDaoMock.get(any())).thenReturn(vsp);
+ when(licenseArtifactsServiceMock.createLicenseArtifacts(any(), any(), any(), any()))
+ .thenReturn(new FileContentHandler());
+ final PackageInfo packageInfo = vendorSoftwareProductManager.createPackage("0", new Version());
+ assertThat("Package Info should contain resource type", packageInfo.getResourceType(),
+ equalTo(ResourceTypeEnum.PNF.name()));
+ assertThat("Should not contain moved artifact", toscaMetadata.getArtifactFiles().getFileList(),
+ not(hasItem("Deployment/ANOTHER/authorized_keys")));
+ assertThat("Should contain moved artifact", toscaMetadata.getArtifactFiles().getFileList(),
+ hasItem("Informational/OTHER/authorized_keys"));
+ final String serviceTemplateAsYaml = new YamlUtil().objectToYaml(toscaMetadata.getServiceTemplates());
+ assertThat("Descriptor should not contain reference to file", serviceTemplateAsYaml,
+ not(containsString("Artifacts/Deployment/ANOTHER/authorized_keys")));
+ assertThat("Descriptor should contain reference to file", serviceTemplateAsYaml,
+ containsString("Artifacts/Informational/OTHER/authorized_keys"));
+ }
}
- }
@Test
public void testCreate() {
@@ -399,120 +443,6 @@ public class VendorSoftwareProductManagerImplTest {
assertVspsEquals(actualVsp, expectedVsp);
}
-/*
- @Test
- public void testSubmitWithMissingData() throws IOException {
- VersionInfo versionInfo = new VersionInfo();
- versionInfo.setActiveVersion(VERSION01);
-
- doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
- VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
- VSP_ID, USER1, VersionableEntityAction.Read);
-
- VspDetails vsp = new VspDetails(VSP_ID, VERSION01);
- vsp.setOnboardingMethod("Manual");
- doReturn(vsp).when(vspInfoDaoMock).get(anyObject());
-
- VspQuestionnaireEntity vspQuestionnaire = new VspQuestionnaireEntity(VSP_ID, VERSION01);
- vspQuestionnaire.setQuestionnaireData("{}");
- doReturn(vspQuestionnaire).when(vspInfoDaoMock).getQuestionnaire(VSP_ID, VERSION01);
-
- ComponentEntity comp1 = new ComponentEntity(VSP_ID, VERSION01, "comp1");
- comp1.setQuestionnaireData("{}");
- doReturn(Collections.singleton(comp1)).when(vendorSoftwareProductDaoMock)
- .listComponentsCompositionAndQuestionnaire(VSP_ID, VERSION01);
-
- NicEntity nic1 = new NicEntity(VSP_ID, VERSION01, "comp1", "nic1");
- nic1.setQuestionnaireData("{}");
- doReturn(Collections.singleton(nic1))
- .when(vendorSoftwareProductDaoMock).listNicsByVsp(VSP_ID, VERSION01);
-
- ValidationResponse validationResponse = vendorSoftwareProductManager.submit(VSP_ID, USER1);
- Assert.assertNotNull(validationResponse);
- Assert.assertFalse(validationResponse.isValid());
- List<String> errorIds = validationResponse.getVspErrors().stream().map(ErrorCode::id).distinct()
- .collect(Collectors.toList());
- Assert.assertTrue(errorIds.contains(ValidationErrorBuilder.FIELD_VALIDATION_ERROR_ERR_ID));
- Assert.assertTrue(errorIds.contains(VendorSoftwareProductErrorCodes.VSP_INVALID));
-
- verify(versioningManagerMock, never())
- .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
- USER1, null);
- verify(activityLogManagerMock, never()).addActionLog(any(ActivityLogEntity.class), eq(USER1));
- }
-
- */
-
- // TODO: 3/15/2017 fix and enable
- //@Test
- public void testSubmitWithInvalidLicensingData() throws IOException {
- VersionInfo versionInfo = new VersionInfo();
- versionInfo.setActiveVersion(VERSION01);
- doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
- VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE,
- VSP_ID, USER1, VersionableEntityAction.Read);
-
- VspDetails vsp =
- createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
- "category", "subCategory", "licenseAgreementId",
- Collections.singletonList("featureGroupId"));
- doReturn(vsp).when(vspInfoDaoMock).get(anyObject());
- OrchestrationTemplateEntity uploadData = new OrchestrationTemplateEntity(VSP_ID, VERSION01);
- uploadData.setContentData(
- ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
- doReturn(uploadData).when(orchestrationTemplateDataDaoMock)
- .get(anyObject(), anyObject());
- doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(),
- "MainServiceTemplate.yaml"))
- .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
-
- ValidationResponse validationResponse =
- vendorSoftwareProductManager.validate(vsp);
- Assert.assertNotNull(validationResponse);
- Assert.assertFalse(validationResponse.isValid());
- Assert.assertNull(validationResponse.getVspErrors());
- Assert.assertEquals(validationResponse.getLicensingDataErrors().size(), 1);
-
- verify(versioningManagerMock, never())
- .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
- USER1, null);
- }
-
- // TODO: 3/15/2017 fix and enable
- //@Test
- public void testSubmit() throws IOException {
- mockVersioning(VersionableEntityAction.Read);
-
- EnrichmentManagerFactory.getInstance();
- AbstractFactoryBase
- .registerFactory(EnrichmentManagerFactory.class, EnrichmentManagerFactoryImpl.class);
-
- VspDetails vsp =
- createVspDetails(VSP_ID, VERSION01, "Vsp1", "Test-vsp", "vendorName", "vlm1Id", "icon",
- "category", "subCategory", "123", Collections.singletonList("fg1"));
- doReturn(vsp).when(vspInfoDaoMock).get(anyObject());
- OrchestrationTemplateEntity uploadData = new OrchestrationTemplateEntity(VSP_ID, VERSION01);
- uploadData.setContentData(
- ByteBuffer.wrap(FileUtils.toByteArray(getFileInputStream("/emptyComposition"))));
- doReturn(uploadData).when(orchestrationTemplateDataDaoMock)
- .get(anyObject(), anyObject());
- doReturn(new ToscaServiceModel(new FileContentHandler(), new HashMap<>(),
- "MainServiceTemplate.yaml"))
- .when(serviceModelDaoMock).getServiceModel(VSP_ID, VERSION01);
-
- ValidationResponse validationResponse =
- vendorSoftwareProductManager.validate(vsp);
- Assert.assertTrue(validationResponse.isValid());
-
-/* Assert.assertEquals(vsp2.getVersionInfo().getVersion(), VERSION10);
- Assert.assertEquals(vsp2.getVersionInfo().getStatus(), VersionStatus.Certified);
- Assert.assertNull(vsp2.getVersionInfo().getLockingUser());*/
-
- verify(versioningManagerMock)
- .submit(VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID,
- USER1, null);
- }
-
@Test
public void testCreatePackage() throws IOException {
/*VspDetails vspDetailsMock = new VspDetails("vspId", new Version(1, 0));
@@ -540,122 +470,6 @@ public class VendorSoftwareProductManagerImplTest {
Assert.assertNotNull(packageInfo.getVspId());
}
- // TODO: 3/15/2017 fix and enable
- //@Test(dependsOnMethods = {"testListFinals"})
- public void testUploadFileMissingFile() throws IOException {
- try (InputStream zis = getFileInputStream("/vspmanager/zips/missingYml.zip")) {
-
- UploadFileResponse uploadFileResponse =
- candidateManager.upload(VSP_ID, VERSION01, zis, "zip", "file");
-
- Assert.assertEquals(uploadFileResponse.getErrors().size(), 0);
- }
- }
-
- // TODO: 3/15/2017 fix and enable
- //@Test(dependsOnMethods = {"testUploadFileMissingFile"})
- public void testUploadNotZipFile() {
- URL url = this.getClass().getResource("/notZipFile");
-
- try {
- candidateManager.upload(VSP_ID, VERSION01, url.openStream(), "zip", "file");
- candidateManager.process(VSP_ID, VERSION01);
- } catch (Exception ce) {
- Assert.assertEquals(ce.getMessage(), Messages.CREATE_MANIFEST_FROM_ZIP.getErrorMessage());
- }
- }
-
- private List<String> getWantedFileNamesFromCsar(String pathInCsar)
- throws IOException {
- File translatedFile = vendorSoftwareProductManager.getTranslatedFile(VSP_ID, VERSION10);
-
- return getFileNamesFromFolderInCsar(translatedFile,
- pathInCsar);
- }
-
- private List<String> getFileNamesFromFolderInCsar(File csar, String folderName)
- throws IOException {
- List<String> fileNames = new ArrayList<>();
-
- try (ZipInputStream zip = new ZipInputStream(new FileInputStream(csar))) {
- ZipEntry ze;
-
- while ((ze = zip.getNextEntry()) != null) {
- String name = ze.getName();
- if (name.contains(folderName)) {
- fileNames.add(name);
- }
- }
- }
-
- return fileNames;
- }
- /*
- //Disabled for sonar null pointer issue for componentEntities
- private Pair<String, String> uploadMib(String vspId, String user, String filePath,
- String fileName) {
- List<ComponentEntity> componentEntities = null;
- //(List<ComponentEntity>) vendorSoftwareProductManager.listComponents(vspId, null, user);
- monitoringUploadsManager.upload(getFileInputStream(filePath),
- fileName, vspId,
-<<<<<<< HEAD
- VERSION01, componentEntities.get(0).getId(), ArtifactType.SNMP_POLL);
- //TODO: add validate of logActivity() func call
-=======
- VERSION01, componentEntities.get(0).getId(), MonitoringUploadType.SNMP_POLL, user);
- //TODO: add validate of addActionLog() func call
->>>>>>> feature/Amdocs-ASDC-1710
-
- return new ImmutablePair<>(componentEntities.get(0).getId(),
- componentEntities.get(0).getComponentCompositionData()
- .getDisplayName());
- }*/
-
- // TODO: 3/15/2017 fix and enable
-/*
-
- public void testUpdatedVSPShouldBeInBeginningOfList() {
- vendorSoftwareProductManager.updateVsp(new VspDetails(), USER3);
- assertVSPInWantedLocationInVSPList(id006, 0, USER3);
-
- InputStream zis = getFileInputStream("/vspmanager/zips/fullComposition.zip");
- candidateManager.upload(id007, VERSION01, zis, USER3);
- candidateManager.process(id007, VERSION01, USER3);
- assertVSPInWantedLocationInVSPList(id007, 0, USER3);
- }
-
- @Test(dependsOnMethods = {"testUpdatedVSPShouldBeInBeginningOfList"})
- public void testVSPInBeginningOfListAfterCheckin() {
- vendorSoftwareProductManager.checkin(id006, USER3);
- assertVSPInWantedLocationInVSPList(id006, 0, USER3);
-
- vendorSoftwareProductManager.checkin(id007, USER3);
- assertVSPInWantedLocationInVSPList(id007, 0, USER3);
- }
-
- @Test(dependsOnMethods = {"testVSPInBeginningOfListAfterCheckin"})
- public void testVSPInBeginningOfListAfterCheckout() {
- vendorSoftwareProductManager.checkout(id006, USER3);
- assertVSPInWantedLocationInVSPList(id006, 0, USER3);
- }
-
- @Test(dependsOnMethods = {"testVSPInBeginningOfListAfterCheckout"})
- public void testVSPInBeginningOfListAfterUndoCheckout() {
- vendorSoftwareProductManager.checkout(id007, USER3);
- assertVSPInWantedLocationInVSPList(id007, 0, USER3);
-
- vendorSoftwareProductManager.undoCheckout(id006, USER3);
- assertVSPInWantedLocationInVSPList(id006, 0, USER3);
- }
-
- @Test(dependsOnMethods = {"testVSPInBeginningOfListAfterUndoCheckout"})
- public void testVSPInBeginningOfListAfterSubmit() throws IOException {
- vendorSoftwareProductManager.checkin(id007, USER3);
- vendorSoftwareProductManager.submit(id007, USER3);
-
- assertVSPInWantedLocationInVSPList(id007, 0, USER3);
- }
-*/
@Test
public void testValidateWithCandidateDataNotProcessed() throws IOException {
VspDetails vsp =
@@ -705,26 +519,6 @@ public class VendorSoftwareProductManagerImplTest {
Assert.assertEquals(validationResponse.getVspErrors().size(), 1);
}
- private void testLegalUpload(String vspId, Version version, InputStream upload, String user) {
- candidateManager.upload(vspId, VERSION01, upload, "zip", "file");
- candidateManager.process(vspId, VERSION01);
-
- OrchestrationTemplateEntity uploadData =
- orchestrationTemplateDataDaoMock.get(vspId, version);
- Assert.assertNotNull(uploadData);
- }
-
-
- private InputStream getFileInputStream(String fileName) {
- URL url = this.getClass().getResource(fileName);
- try {
- return url.openStream();
- } catch (IOException exception) {
- exception.printStackTrace();
- return null;
- }
- }
-
private static VspDetails createVspDetails(String id, Version version, String name, String desc,
String vendorName, String vlm, String icon,
String category, String subCategory,
@@ -758,15 +552,4 @@ public class VendorSoftwareProductManagerImplTest {
Assert.assertEquals(actual.getFeatureGroups(), expected.getFeatureGroups());
}
-
- // todo ********************** move to common **************************************
-
- private void mockVersioning(VersionableEntityAction action) {
- VersionInfo versionInfo = new VersionInfo();
- versionInfo.setActiveVersion(VERSION01);
- doReturn(versionInfo).when(versioningManagerMock).getEntityVersionInfo(
- VendorSoftwareProductConstants.VENDOR_SOFTWARE_PRODUCT_VERSIONABLE_TYPE, VSP_ID, USER1,
- action);
- }
-
}
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/descriptor/MainServiceTemplate.yaml b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/descriptor/MainServiceTemplate.yaml
new file mode 100644
index 0000000000..cd1a2688d3
--- /dev/null
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/descriptor/MainServiceTemplate.yaml
@@ -0,0 +1,97 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+metadata:
+ VNFD_SCHEMA_VERSION: 2.5.1+1
+ template_name: Main
+ template_version: '1.0'
+ template_author: onap
+topology_template:
+ node_templates:
+ VDU_vgw_0:
+ type: tosca.nodes.nfv.Vdu.Compute
+ properties:
+ name:
+ get_input: vgw_name_0
+ description: vgw
+ vdu_profile:
+ min_number_of_instances: 1
+ max_number_of_instances: 1
+ watchdog: none
+ inject_files:
+ source_path: ../Artifacts/Deployment/ANOTHER/authorized_keys
+ dest_path: /home/ubuntu/.ssh/authorized_keys
+ meta_data:
+ vnf_id:
+ get_input: vnf_id
+ vf_module_id:
+ get_input: vf_module_id
+ mux_gw_private_net_ipaddr:
+ get_input: vgw_private_ip_0
+ oam_ipaddr:
+ get_input: vgw_private_ip_1
+ oam_cidr:
+ get_input: onap_private_net_cidr
+ cpe_public_net_cidr:
+ get_input: cpe_public_net_cidr
+ mux_gw_private_net_cidr:
+ get_input: mux_gw_private_net_cidr
+ mux_ip_addr:
+ get_input: mux_ip_addr
+ vg_vgmux_tunnel_vni:
+ get_input: vg_vgmux_tunnel_vni
+ install_script_version:
+ get_input: install_script_version
+ cloud_env:
+ get_input: cloud_env
+ nexus_artifact_repo:
+ get_input: nexus_artifact_repo
+ boot_data: |
+ #!/bin/bash
+ METADATA=`curl -s http://169.254.169.254/openstack/2012-08-10/meta_data.json`
+ apt-get -y install jq
+
+ get_metadata () {
+ echo $METADATA | jq -r ".meta.$1"
+ }
+
+ # Create configuration files
+ mkdir /opt/config
+ echo "$(get_metadata oam_ipaddr)" > /opt/config/oam_ipaddr.txt
+ echo "$(get_metadata oam_cidr)" > /opt/config/oam_cidr.txt
+ echo "$(get_metadata cpe_public_net_cidr)" > /opt/config/cpe_public_net_cidr.txt
+ echo "$(get_metadata mux_gw_private_net_ipaddr)" > /opt/config/mux_gw_private_net_ipaddr.txt
+ echo "$(get_metadata mux_gw_private_net_cidr)" > /opt/config/mux_gw_private_net_cidr.txt
+ echo "$(get_metadata install_script_version)" > /opt/config/install_script_version.txt
+ echo "$(get_metadata cloud_env)" > /opt/config/cloud_env.txt
+ echo "$(get_metadata mux_ip_addr)" > /opt/config/mux_ip_addr.txt
+ echo "$(get_metadata vg_vgmux_tunnel_vni)" > /opt/config/vg_vgmux_tunnel_vni.txt
+ echo "$(get_metadata nexus_artifact_repo)" > /opt/config/nexus_artifact_repo.txt
+
+ # Download and run install script
+ apt-get -y install unzip
+ INSTALL_SCRIPT_VERSION=$(get_metadata install_script_version)
+ NEXUS_ARTIFACT_REPO=$(get_metadata nexus_artifact_repo)
+ if [[ "${INSTALL_SCRIPT_VERSION}" =~ "SNAPSHOT" ]]; then REPO=snapshots; else REPO=releases; fi
+ curl -k -L "${NEXUS_ARTIFACT_REPO}/service/local/artifact/maven/redirect?r=${REPO}&g=org.onap.demo.vnf.vcpe&a=vcpe-scripts&e=zip&v=${INSTALL_SCRIPT_VERSION}" -o /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip
+ unzip -j /opt/vcpe-scripts-${INSTALL_SCRIPT_VERSION}.zip -d /opt v_gw_install.sh
+ cd /opt
+ chmod +x v_gw_install.sh
+ ./v_gw_install.sh
+ capabilities:
+ virtual_compute:
+ properties:
+ virtual_memory:
+ virtual_mem_size: 4096 MB
+ vdu_mem_requirements:
+ memoryPageSize: '{"schemaVersion": "0", "schemaSelector": "", "hardwarePlatform":
+ "generic", "mandatory": "true", "configurationValue": "2 MB"}'
+ numberOfPages: '{"schemaVersion": "0","schemaSelector": "","hardwarePlatform":
+ "generic","mandatory": "true", "configurationValue": "1024"}'
+ virtual_cpu:
+ num_virtual_cpu: 2
+ cpu_architecture: generic
+ virtual_local_storage:
+ - size_of_storage: 40 GB
+ artifacts:
+ sw_image:
+ type: tosca.artifacts.nfv.SwImage
+ file: ../Artifacts/Deployment/ANOTHER/image \ No newline at end of file
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNFWithNonMano.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNFWithNonMano.mf
new file mode 100644
index 0000000000..02275e1bca
--- /dev/null
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNFWithNonMano.mf
@@ -0,0 +1,11 @@
+metadata:
+ pnfd_name: MRF
+ pnfd_provider: SunShineCompany
+ pnfd_archive_version: 1.0
+ pnfd_release_date_time: 2017-01-01T10:00:00+03:00
+
+Source: MainServiceTemplate.yaml
+
+non_mano_artifact_sets:
+ onap_others:
+ Source: Artifacts/Deployment/ANOTHER/authorized_keys
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNF.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPnfWithoutNonMano.mf
index bda3264f5d..bda3264f5d 100644
--- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPNF.mf
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/manifest/ValidNonManoToscaPnfWithoutNonMano.mf