diff options
11 files changed, 3590 insertions, 282 deletions
diff --git a/catalog-be/src/main/resources/config/error-configuration.yaml b/catalog-be/src/main/resources/config/error-configuration.yaml index 62bd7206ba..fbf397a999 100644 --- a/catalog-be/src/main/resources/config/error-configuration.yaml +++ b/catalog-be/src/main/resources/config/error-configuration.yaml @@ -411,6 +411,7 @@ errors: message: "Error: Invalid Content. Missing Capability Type '%1'.", messageId: "SVC4115" } +#-----------SVC4116--------------------------- RESOURCE_INSTANCE_BAD_REQUEST: { code: 400, message: "Error: Invalid Content.", @@ -1187,7 +1188,6 @@ errors: messageId: "SVC4585" } #---------SVC4586------------------------------ -#---------SVC4586------------------------------ INVALID_SERVICE_API_URL: { code: 400, message: 'Error: Invalid Service API URL. Please check whether your URL has a valid domain extension and does not contain the following characters - #?&@%+;,=$<>~^`\[]{}|"*!', diff --git a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/test/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/test/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java index 01029e8adc..2de7535a8b 100644 --- a/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/test/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java +++ b/common/openecomp-sdc-artifact-generator-lib/openecomp-sdc-artifact-generator-core/src/test/java/org/openecomp/sdc/generator/ArtifactGenerationServiceTest.java @@ -73,9 +73,9 @@ public class ArtifactGenerationServiceTest { private static final String aaiArtifactType = ArtifactType.AAI.name(); private static final String aaiArtifactGroupType = GroupType.DEPLOYMENT.name(); private static final String generatorConfig = "{\"artifactTypes\": [\"OTHER\",\"AAI\"]}"; - Properties properties = new Properties(); - Map<String, String> additionalParams = new HashMap(); - Map<String, String> resourcesVersion = new HashMap<>(); + private final Properties properties = new Properties(); + private final Map<String, String> additionalParams = new HashMap<>(); + private final Map<String, String> resourcesVersion = new HashMap<>(); @BeforeSuite public void loadProperties() throws Exception{ @@ -87,7 +87,7 @@ public class ArtifactGenerationServiceTest { public void testArtifactGeneration() { // Sunny day scenario service with VF anf vfmodule try { - Map<String, Model> outputArtifactMap = new HashMap<>(); + ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; @@ -112,7 +112,7 @@ public class ArtifactGenerationServiceTest { Assert.assertEquals(resultData.size(),5); // 1-service,1-VF-resource,1-vfmodule and 2 // others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -129,7 +129,6 @@ public class ArtifactGenerationServiceTest { // Sunny day scenario service with VF and extra widget like CP anf vf has vfmodule without // member try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testWidgetinServiceTosca/"; @@ -142,7 +141,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),5); // 1-service,1-VF-resource,1-vfmodule and 2 // others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -159,7 +158,6 @@ public class ArtifactGenerationServiceTest { // Sunny day scenario service with VF and extra widget like CP anf vf has vfmodule without // member try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testSameVLdifferentVersion/"; @@ -172,7 +170,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),8); // others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -188,7 +186,6 @@ public class ArtifactGenerationServiceTest { public void testArtifactGenerationAllottedResourceAndL3Network() { // Sunny day scenario service with allotted resource and L3-network try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai2/"; @@ -203,7 +200,7 @@ public class ArtifactGenerationServiceTest { Assert.assertEquals(resultData.size(),5); // and 2 // others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -248,7 +245,6 @@ public class ArtifactGenerationServiceTest { public void testWhenOnlyServToscaNoResTosca() { try { //Testing only service tosca no resource Tosca - Map<String, Model> outputArtifactMap = new HashMap<>(); String aaiResourceBasePaths = "testArtifactGeneration4/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); @@ -261,7 +257,7 @@ public class ArtifactGenerationServiceTest { } } Assert.assertEquals(resultData.size(),3); // 1-service and 2-Others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); } catch (Exception e) { Assert.fail(e.getMessage()); @@ -286,7 +282,6 @@ public class ArtifactGenerationServiceTest { public void testWhenExtraResToscaNotPartOfServ() { try { // Valid scenario with extra resource tosca which is not part of Service - Map<String, Model> outputArtifactMap = new HashMap<>(); String aaiResourceBasePaths = "testArtifactGeneration6/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); @@ -299,7 +294,7 @@ public class ArtifactGenerationServiceTest { } } Assert.assertEquals(resultData.size(),3); // 1-service and 2 Others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); } catch (Exception e) { Assert.fail(e.getMessage()); @@ -397,13 +392,8 @@ public class ArtifactGenerationServiceTest { try { //mandatory attribute <vfModuleModelInvariantUUID> missing List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_ModInvUUID.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_ModInvUUID.yml"); - fis1.close(); - - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_ModInvUUID.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_ModInvUUID.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_ModInvUUID.yml"); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_ModInvUUID.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -415,7 +405,7 @@ public class ArtifactGenerationServiceTest { } } - public static void readPayload(List<Artifact> inputArtifacts,InputStream fis, String fileName) throws + public static void readPayload(List<Artifact> inputArtifacts, InputStream fis, String fileName) throws IOException { byte[] payload = new byte[fis.available()]; fis.read(payload); @@ -435,13 +425,9 @@ public class ArtifactGenerationServiceTest { try { //invalid id since not of length 36 for <vfModuleModelInvariantUUID> List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_InvalidVfModInvUuIdAttr.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_InvalidVfModInvUuIdAttr.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_InvalidVfModInvUuIdAttr.yml"); - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_InvalidVfModInvUuIdAttr.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_InvalidVfModInvUuIdAttr.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_InvalidVfModInvUuIdAttr.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -458,13 +444,9 @@ public class ArtifactGenerationServiceTest { try { //mandatory attribute <vfModuleModelName> missing List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_ModelName.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_ModelName.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_ModelName.yml"); - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_ModelName.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_ModelName.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_ModelName.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -497,13 +479,9 @@ public class ArtifactGenerationServiceTest { try { //mandatory attribute <vfModuleModelUUID> missing in Artifact List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_ModelUUID.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_ModelUUID.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_ModelUUID.yml"); - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_ModelUUID.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_ModelUUID.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_ModelUUID.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -521,13 +499,9 @@ public class ArtifactGenerationServiceTest { try { //invalid id since not of length 36 for <vfModuleModelUUID> List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_InvalidVfModUuIdAttr.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_InvalidVfModUuIdAttr.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_InvalidVfModUuIdAttr.yml"); - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_InvalidVfModUuIdAttr.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_InvalidVfModUuIdAttr.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_InvalidVfModUuIdAttr.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -544,13 +518,9 @@ public class ArtifactGenerationServiceTest { try { //mandatory attribute <vfModuleModelVersion> missing List<Artifact> inputArtifacts = new ArrayList<>(); - InputStream fis1 = ArtifactGenerationServiceTest.class.getResourceAsStream("/service_vmme_template_ModelVersion.yml"); - readPayload(inputArtifacts,fis1, "service_vmme_template_ModelVersion.yml"); - fis1.close(); + readPayloadFromResource(inputArtifacts, "service_vmme_template_ModelVersion.yml"); - InputStream fis2 = ArtifactGenerationServiceTest.class.getResourceAsStream("/vf_vmme_template_ModelVersion.yml"); - readPayload(inputArtifacts,fis2, "vf_vmme_template_ModelVersion.yml"); - fis2.close(); + readPayloadFromResource(inputArtifacts, "vf_vmme_template_ModelVersion.yml"); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); Assert.assertEquals( @@ -567,9 +537,7 @@ public class ArtifactGenerationServiceTest { String configLoc = System.getProperty("artifactgenerator.config"); try { System.clearProperty("artifactgenerator.config"); - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -599,17 +567,14 @@ public class ArtifactGenerationServiceTest { .getName(); String assertMsg = ArtifactType.AAI.name() + ".model-version-id." +Widget.getWidget (Widget.Type.SERVICE).getName(); - OutputStream fos = new FileOutputStream(new File(configLoc)); - String serviceWidgetId = properties.getProperty(serviceWidgetName); //Remove property from Artifact-Generator.properties properties.remove(serviceWidgetName); - properties.store(fos,null); - fos.close(); + try (OutputStream fos = new FileOutputStream(new File(configLoc))) { + properties.store(fos,null); + } - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -634,9 +599,7 @@ public class ArtifactGenerationServiceTest { String configLoc = System.getProperty("artifactgenerator.config"); try { System.setProperty("artifactgenerator.config",configLoc + File.separator + "testErrorWhenNoFileAtConfigLocation"); - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -656,9 +619,7 @@ public class ArtifactGenerationServiceTest { // scenario service with VF anf vfmodule but no service version in additional parameter try { additionalParams.clear(); - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -678,7 +639,6 @@ public class ArtifactGenerationServiceTest { // Sunny day scenario service with VF anf vfmodule and service version as adiitional parameter try { additionalParams.put(AdditionalParams.ServiceVersion.getName(),"9.0"); - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; @@ -703,7 +663,7 @@ public class ArtifactGenerationServiceTest { Assert.assertEquals(resultData.size(),5); // 1-service,1-VF-resource,1-vfmodule and 2 // others - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -722,9 +682,7 @@ public class ArtifactGenerationServiceTest { public void testErrorWhenInvalidServiceVersion() { // scenario service with VF anf vfmodule but invalid service version in additional parameter try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "aai/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); @@ -785,9 +743,7 @@ public class ArtifactGenerationServiceTest { public void testErrorWhenNoResourceVersion() { // scenario service with VF but missing resource version in service tosca try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testErrorWhenNoResourceVersion/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -803,9 +759,7 @@ public class ArtifactGenerationServiceTest { public void testErrorWhenInvalidResourceVersion1() { // scenario service with VF but invalid resource version 0.0 in service tosca try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testErrorWhenInvalidResourceVersion1/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -821,9 +775,7 @@ public class ArtifactGenerationServiceTest { public void testErrorWhenInvalidResourceVersion2() { // scenario service with VF but invalid resource version 1 in service tosca try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testErrorWhenInvalidResourceVersion2/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -838,7 +790,6 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationAllottedResourceWithIpMuxAndTunnelXConn() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testArtifactGeneration15/"; @@ -851,7 +802,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),5); - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -866,9 +817,7 @@ public class ArtifactGenerationServiceTest { // @Test public void testErrorWhenAllottedResourceWithOutProvidingServiceId() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testErrorWhenAllottedResourceWithOutDependingServiceId/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -883,9 +832,7 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationWithoutAllottedResource() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); - List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testArtifactGeneration16/"; List<Artifact> inputArtifacts = init(aaiResourceBasePaths); GenerationData data = obj.generateArtifact(inputArtifacts, generatorConfig, additionalParams); @@ -900,7 +847,6 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationAllottedResourceIpmuxSameInvariantDiffVersion() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testArtifactGeneration17/"; @@ -913,7 +859,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),5); - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -928,7 +874,6 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationAllottedResourceIpmuxSameInvariantSameVersion() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testArtifactGeneration18/"; @@ -942,7 +887,7 @@ public class ArtifactGenerationServiceTest { Assert.assertEquals(resultData.size(),4); - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -957,7 +902,6 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationAllottedResourceIpmuxWithGroups() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testAllotedResourceWithDependingSerWithGroups/"; @@ -970,7 +914,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),5); - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -985,7 +929,6 @@ public class ArtifactGenerationServiceTest { @Test public void testArtifactGenerationAllottedResourceWithVF() { try { - Map<String, Model> outputArtifactMap = new HashMap<>(); ArtifactGenerationServiceImpl obj = new ArtifactGenerationServiceImpl(); List<ToscaTemplate> toscas = new LinkedList<>(); String aaiResourceBasePaths = "testArtifactGenerationAllottedResourceWithVF/"; @@ -998,7 +941,7 @@ public class ArtifactGenerationServiceTest { List<Artifact> resultData = data.getResultData(); Assert.assertEquals(resultData.size(),7); - outputArtifactMap = populateAAIGeneratedModelStore(resultData); + Map<String, Model> outputArtifactMap = populateAAIGeneratedModelStore(resultData); testServiceTosca(toscas, outputArtifactMap); testResourceTosca(toscas.iterator(), outputArtifactMap); } else { @@ -1500,7 +1443,7 @@ nodeProperties = node.getProperties(); return matchedModelElements; } - private Map<String, Model> populateAAIGeneratedModelStore(List<Artifact> resultData) { + private Map<String, Model> populateAAIGeneratedModelStore(List<Artifact> resultData) throws IOException { Map<String, Model> outputArtifactMap = new HashMap<>(); for (Artifact outputArtifact : resultData) { if (outputArtifact.getType().equals(ArtifactType.MODEL_INVENTORY_PROFILE.name())) { @@ -1513,16 +1456,21 @@ nodeProperties = node.getProperties(); return outputArtifactMap; } - private Model getUnmarshalledArtifactModel(String aaiModel) { - JAXBContext jaxbContext; + private Model getUnmarshalledArtifactModel(String aaiModel) throws IOException { + try { - jaxbContext = JAXBContext.newInstance(Model.class); + + JAXBContext jaxbContext = JAXBContext.newInstance(Model.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes()); - return (Model) unmarshaller.unmarshal(aaiModelStream); + + try (InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes())) { + return (Model) unmarshaller.unmarshal(aaiModelStream); + } + } catch (JAXBException e) { e.printStackTrace(); } + return null; } @@ -1567,20 +1515,6 @@ nodeProperties = node.getProperties(); return null; } - - private ToscaTemplate getResourceTosca(List<ToscaTemplate> input) { - Iterator<ToscaTemplate> iter = input.iterator(); - while (iter.hasNext()) { - ToscaTemplate tosca = iter.next(); - if (!tosca.isService()) { - iter.remove(); - return tosca; - } - } - return null; - } - - private Map<String, String> getVFModuleMetadataTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) { Map<String, GroupDefinition> groupDefinitionMap = @@ -1589,7 +1523,7 @@ nodeProperties = node.getProperties(); for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) { if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) { String uuid = e.getValue().getMetadata().get("vfModuleModelUUID"); - if (uuid == vfModuleModelUUID) { + if (Objects.equals(uuid, vfModuleModelUUID)) { vfModuleModelMetadata = e.getValue().getMetadata(); vfModuleModelMetadata.put("vf_module_description", (String) e.getValue().getProperties().get("vf_module_description")); @@ -1606,17 +1540,15 @@ nodeProperties = node.getProperties(); Map<String, NodeTemplate> nodeTemplateMaps = toscaTemplate.getTopology_template().getNode_templates(); Map<String, Object> vfModuleMembers = new LinkedHashMap<>(); - List<String> vfModuleModelMetadata = new ArrayList<>(); + List<String> vfModuleModelMetadata; for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) { if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) { String uuid = e.getValue().getMetadata().get("vfModuleModelUUID"); - if (uuid == vfModuleModelUUID) { + if (Objects.equals(uuid, vfModuleModelUUID)) { vfModuleModelMetadata = e.getValue().getMembers(); if (vfModuleModelMetadata !=null) { - Iterator itr = vfModuleModelMetadata.iterator(); - while (itr.hasNext()) { - Object obj = itr.next(); - NodeTemplate nodeTemplate = nodeTemplateMaps.get(obj); + for (Object key : vfModuleModelMetadata) { + NodeTemplate nodeTemplate = nodeTemplateMaps.get(key); String nodetype = null; if (nodeTemplate != null) { nodetype = nodeTemplate.getType(); @@ -1624,7 +1556,7 @@ nodeProperties = node.getProperties(); if (nodetype != null) { String widgetType = membersType(nodetype); if (widgetType != null) { - vfModuleMembers.put(widgetType, obj); + vfModuleMembers.put(widgetType, key); } } } @@ -1686,24 +1618,24 @@ nodeProperties = node.getProperties(); Assert.fail("Invalid resource directory"); } - for (int i = 0; i < resourceFileList.length; i++) { - byte[] payload = null; + for (String aResourceFileList : resourceFileList) { File resourceFile = new File( - this.getClass().getClassLoader().getResource(aaiResourceBasePaths + resourceFileList[i]) - .getPath()); - FileInputStream fileInputStream; + this.getClass().getClassLoader().getResource(aaiResourceBasePaths + aResourceFileList) + .getPath()); + //convert service tosca file into array of bytes - payload = new byte[(int) resourceFile.length()]; - fileInputStream = new FileInputStream(resourceFile); - fileInputStream.read(payload); - fileInputStream.close(); + byte[] payload = new byte[(int) resourceFile.length()]; + try (FileInputStream fileInputStream = new FileInputStream(resourceFile)) { + fileInputStream.read(payload); + } + String checksum = GeneratorUtil.checkSum(payload); byte[] encodedPayload = GeneratorUtil.encode(payload); Artifact artifact = - new Artifact(aaiArtifactType, aaiArtifactGroupType, checksum, encodedPayload); - artifact.setName(resourceFileList[i]); - artifact.setLabel(resourceFileList[i]); - artifact.setDescription(resourceFileList[i]); + new Artifact(aaiArtifactType, aaiArtifactGroupType, checksum, encodedPayload); + artifact.setName(aResourceFileList); + artifact.setLabel(aResourceFileList); + artifact.setDescription(aResourceFileList); artifact.setVersion("1.0"); inputArtifacts1.add(artifact); @@ -1742,4 +1674,10 @@ nodeProperties = node.getProperties(); } } } + + private void readPayloadFromResource(List<Artifact> inputArtifacts, String file) throws IOException { + try (InputStream stream = ArtifactGenerationServiceTest.class.getResourceAsStream("/" + file)) { + readPayload(inputArtifacts, stream, file); + } + } } diff --git a/docs/consumedapis.rst b/docs/consumedapis.rst index c2af4c20e0..099442d3a4 100644 --- a/docs/consumedapis.rst +++ b/docs/consumedapis.rst @@ -4,13 +4,4 @@ Consumed APIs ============= -.. note:: - * This section is used to reference APIs that a software component depends on - and uses from other sources. - - * Consumed APIs should be a specific link to the offered APIs from another component - or external source. - - * This note must be removed after content has been added. - - +SDC Project does not consume any APIs form other sources therfore this section is currently empty diff --git a/docs/logging.rst b/docs/logging.rst index 1845ba0037..a6cca5b707 100644 --- a/docs/logging.rst +++ b/docs/logging.rst @@ -1,6 +1,7 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 +======= Logging ======= @@ -19,7 +20,7 @@ Where to Access Information +--------+------------------------------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+ | Server | Location | Type | Description | Rolling | -+--------+------------------------------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+ ++========+==========================================+=====================+===========================================================================================================================================================================================+=====================+ | BE | /data/logs/BE/2017_03_10.stderrout.log | Jetty server log | The log describes info regarding Jetty startup and execution | the log rolls daily | + +------------------------------------------+---------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+ | | /data/logs/BE/SDC/SDC-BE/audit.log | application audit | An audit record is created for each operation in SDC | rolls at 20 mb | @@ -52,3 +53,3271 @@ Where to Access Information Error / Warning Messages ------------------------ + +Respone Types +============= + +:: + + OK: { + code: 200, + message: "OK" + } + + CREATED: { + code: 201, + message: "OK" + } + + NO_CONTENT: { + code: 204, + message: "No Content" + } + +--------POL4050----------------------------- +============================================ + +:: + + NOT_ALLOWED: { + code: 405, + message: "Error: Method not allowed.", + messageId: "POL4050" + } + +--------POL5000----------------------------- +============================================ + +:: + + GENERAL_ERROR: { + code: 500, + message: "Error: Internal Server Error. Please try again later.", + messageId: "POL5000" + } + +---------POL5001---------------------------- +============================================ + +:: + + MISSING_X_ECOMP_INSTANCE_ID: { + code: 400 , + message: "Error: Missing 'X-ECOMP-InstanceID' HTTP header.", + messageId: "POL5001" + } + +---------POL5002------------------------------ +============================================== + +:: + + AUTH_REQUIRED: { + code: 401 , + message: "Error: Authentication is required to use the API.", + messageId: "POL5002" + } + +---------POL5003------------------------------ +============================================== + +:: + + AUTH_FAILED: { + code: 403 , + message: "Error: Not authorized to use the API.", + messageId: "POL5003" + } + +---------POL5004------------------------------ +============================================== + +:: + + MISSING\_USER\_ID: { + code: 400 , + message: "Error: Missing 'USER\_ID' HTTP header.", + messageId: "POL5004" + } + +---------SVC4000----------------------------- +============================================= + +:: + + INVALID_CONTENT: { + code: 400, + message: "Error: Invalid content.", + messageId: "SVC4000" + } + +---------SVC4002----------------------------- +============================================= + +:: + + MISSING_INFORMATION: { + code: 403, + message: "Error: Missing information.", + messageId: "SVC4002" + } + +---------SVC4003------------------------------ +============================================== + +- %1 - Users's ID + +:: + + USER_NOT_FOUND: { + code: 404, + message: "Error: User '%1' was not found.", + messageId: "SVC4003" + } + +---------SVC4004----------------------------- +============================================= + +- %1 - Users's email address + +:: + + INVALID_EMAIL_DDRESS: { + code: 400, + message: "Error: Invalid email address '%1'.", + messageId: "SVC4004" + } + +---------SVC4005------------------------------ +============================================== + +- %1 - role + +:: + + INVALID_ROLE: { + code: 400, + message: "Error: Invalid role '%1'.", + messageId: "SVC4005" + } + +---------SVC4006------------------------------ +============================================== + +- %1 - Users's USER_ID + +:: + + USER_ALREADY_EXIST: { + code: 409, + message: "Error: User with '%1' ID already exists.", + messageId: "SVC4006" + } + +---------SVC4007------------------------------ +============================================== + +:: + + DELETE_USER_ADMIN_CONFLICT: { + code: 409, + message: "Error: An administrator can only be deleted by another administrator.", + messageId: "SVC4007" + } + +---------SVC4008----------------------------- +============================================= + +- %1 - Users's USER_ID + +:: + + INVALID_USER_ID: { + code: 400, + message: "Error: Invalid userId '%1'.", + messageId: "SVC4008" + } + +---------SVC4049------------------------------ +============================================== + +- %1 - Service/Resource + +:: + + COMPONENT_MISSING_CONTACT: { + code: 400, + message: "Error: Invalid Content. Missing %1 contact.", + messageId: "SVC4049" + } + +---------SVC4050----------------------------- +============================================= + +- %1 - Service/Resource/Additional parameter +- %2 - Service/Resource/Label name + +:: + + COMPONENT_NAME_ALREADY_EXIST: { + code: 409, + message: "Error: %1 with name '%2' already exists.", + messageId: "SVC4050" + } + +---------SVC4051------------------------------ +============================================== + +- %1 - Resource/Service + +:: + + COMPONENT_MISSING_CATEGORY: { + code: 400, + message: "Error: Invalid Content. Missing %1 category.", + messageId: "SVC4051" + } + + +---------SVC4052------------------------------ +============================================== + +:: + + COMPONENT_MISSING_TAGS: { + code: 400, + message: "Error: Invalid Content. At least one tag has to be specified.", + messageId: "SVC4052" + } + +---------SVC4053------------------------------ +============================================== + +- %1 - service/resource + +:: + + COMPONENT_MISSING_DESCRIPTION: { + code: 400, + message: "Error: Invalid Content. Missing %1 description.", + messageId: "SVC4053" + } + +---------SVC4054------------------------------ +============================================== + +- %1 - service/resource + +:: + + COMPONENT_INVALID_CATEGORY: { + code: 400, + message: "Error: Invalid Content. Invalid %1 category.", + messageId: "SVC4054" + } + +---------SVC4055------------------------------ +============================================== + +:: + + MISSING_VENDOR_NAME: { + code: 400, + message: "Error: Invalid Content. Missing vendor name.", + messageId: "SVC4055" + } + +---------SVC4056------------------------------ +============================================== + +:: + + MISSING_VENDOR_RELEASE: { + code: 400, + message: "Error: Invalid Content. Missing vendor release.", + messageId: "SVC4056" + } + +---------SVC4057------------------------------ +============================================== + +:: + + MISSING_DERIVED_FROM_TEMPLATE: { + code: 400, + message: "Error: Invalid Content. Missing derived from template specification.", + messageId: "SVC4057" + } + +---------SVC4058------------------------------ +============================================== + +- %1 - service/resource + +:: + + COMPONENT_MISSING_ICON: { + code: 400, + message: "Error: Invalid Content. Missing %1 icon.", + messageId: "SVC4058" + } + +---------SVC4059------------------------------ +============================================== + +- %1 - service/resource + +:: + + COMPONENT_INVALID_ICON: { + code: 400, + message: "Error: Invalid Content. Invalid %1 icon.", + messageId: "SVC4059" + } + +---------SVC4060------------------------------ +============================================== + +:: + + PARENT_RESOURCE_NOT_FOUND: { + code: 400, + message: "Error: Invalid Content. Derived from resource template was not found.", + messageId: "SVC4060" + } + +---------SVC4061------------------------------ +============================================== + +:: + + MULTIPLE_PARENT_RESOURCE_FOUND: { + code: 400, + message: "Error: Invalid Content. Multiple derived from resource template is not allowed.", + messageId: "SVC4061" + } + +---------SVC4062------------------------------ +============================================== + +- %1 - service/resource + +:: + + MISSING_COMPONENT_NAME: { + code: 400, + message: "Error: Invalid Content. Missing %1 name.", + messageId: "SVC4062" + } + +---------SVC4063------------------------------ +============================================== + +- %1 - service/resource + +:: + + RESOURCE_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' resource was not found.", + messageId: "SVC4063" + } + +---------SVC4064------------------------------ +============================================== + +- %1 - Service/Resource/Property + +:: + + COMPONENT_INVALID_DESCRIPTION: { + code: 400, + message: "Error: Invalid Content. %1 description contains non-english characters.", + messageId: "SVC4064" + } + +---------SVC4065------------------------------ +============================================== + +- %1 - Service/Resource/Property +- %2 - max resource/service name length + +:: + + COMPONENT_DESCRIPTION_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. %1 description exceeds limit of %2 characters.", + messageId: "SVC4065" + } + +---------SVC4066------------------------------ +============================================== + +- %1 - max length + +:: + + COMPONENT_TAGS_EXCEED_LIMIT: { + code: 400, + message: "Error: Invalid Content. Tags overall length exceeds limit of %1 characters.", + messageId: "SVC4066" + } + +---------SVC4067------------------------------ +============================================== + +- %1 - max length + +:: + + VENDOR_NAME_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Vendor name exceeds limit of %1 characters.", + messageId: "SVC4067" + } + +---------SVC4068------------------------------ +============================================== + +- %1 - max length + +:: + + VENDOR_RELEASE_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Vendor release exceeds limit of %1 characters.", + messageId: "SVC4068" + } + +---------SVC4069------------------------------ +============================================== + +- %1 - Service/Resource/Product + +:: + + COMPONENT_INVALID_CONTACT: { + code: 400, + message: "Error: Invalid Content. %1 Contact Id should be in format 'mnnnnnn' or 'aannna' or 'aannnn', where m=m ,a=a-zA-Z and n=0-9", + messageId: "SVC4069" + } + +---------SVC4070------------------------------ +============================================== + +- %1 - Service/Resource + +:: + + INVALID_COMPONENT_NAME: { + code: 400, + message: 'Error: Invalid Content. %1 name is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4070" + } + +---------SVC4071------------------------------ +============================================== + +:: + + INVALID_VENDOR_NAME: { + code: 400, + message: 'Error: Invalid Content. Vendor name is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4071" + } + +---------SVC4072------------------------------ +============================================== + +:: + + INVALID_VENDOR_RELEASE: { + code: 400, + message: 'Error: Invalid Content. Vendor release is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4072" + } + +---------SVC4073------------------------------ +============================================== + +- %1 - Service/Resource +- %2 - max resource/service name + +:: + + COMPONENT_NAME_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. %1 name exceeds limit of %2 characters.", + messageId: "SVC4073" + } + +---------SVC4080------------------------------ +============================================== + +- %1 - Service/Resource name +- %2 - Service/Resource +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_IN_CHECKOUT_STATE: { + code: 403, + message: "Error: Requested '%1' %2 is locked for modification by %3 %4(%5).", + messageId: "SVC4080" + } + +---------SVC4081----------------------------- +============================================= + +- %1 - Service/Resource name +- %2 - Service/Resource +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_IN_CERT_IN_PROGRESS_STATE: { + code: 403, + message: "Error: Requested '%1' %2 is locked for certification by %3 %4(%5).", + messageId: "SVC4081" + } + +-----------SVC4082--------------------------- +============================================= + +- %1 - Service/Resource name +- %2 - Service/Resource +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_SENT_FOR_CERTIFICATION: { + code: 403, + message: "Error: Requested '%1' %2 is sent for certification by %3 %4(%5).", + messageId: "SVC4082" + } + +-----------SVC4083--------------------------- +============================================= + +- %1 - Service/Resource name + +:: + + COMPONENT_VERSION_ALREADY_EXIST: { + code: 409, + message: "Error: Version of this %1 was already promoted.", + messageId: "SVC4083" + } + +-----------SVC4084--------------------------- +============================================= + +- %1 - Service/Resource/Product name +- %2 - Service/Resource/Product +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_ALREADY_CHECKED_IN: { + code: 409, + message: "Error: The current version of '%1' %2 was already checked-in by %3 %4(%5).", + messageId: "SVC4084" + } + +-----------SVC4085--------------------------- +============================================= + +- %1 - Service/Resource/Product name +- %2 - Service/Resource/Product +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_CHECKOUT_BY_ANOTHER_USER: { + code: 403, + message: "Error: %1 %2 has already been checked out by %3 %4(%5).", + messageId: "SVC4085" + } + +-----------SVC4086--------------------------- +============================================= + +- %1 - Service/Resource name +- %2 - Service/Resource + +:: + + COMPONENT_IN_USE: { + code: 403, + message: "Error: Requested '%1' %2 is in use by another user.", + messageId: "SVC4086" + } + +-----------SVC4087--------------------------- +============================================= + +- %1 - Component name +- %2 - Service/Resource/Product + +:: + + COMPONENT_HAS_NEWER_VERSION: { + code: 409, + message: "Error: Checking out of the requested version of the '%1' %2 is not allowed as a newer version exists.", + messageId: "SVC4087" + } + +-----------SVC4088--------------------------- +============================================= + +- %1 - Service/Resource name +- %2 - Service/Resource +- %3 - First name of last modifier +- %4 - Last name of last modifier +- %5 - USER_ID of last modifier + +:: + + COMPONENT_ALREADY_CERTIFIED: { + code: 403, + message: "Error: Requested %1 %2 has already been certified by %3 %4(%5).", + messageId: "SVC4088" + } + +-----------SVC4089--------------------------- +============================================= + +- %1 - Service/Resource name +- %2 - Service/Resource + +:: + + COMPONENT_NOT_READY_FOR_CERTIFICATION: { + code: 403, + message: "Error: Requested '%1' %2 is not ready for certification.", + messageId: "SVC4089" + } + +-----------SVC4100--------------------------- +============================================= + +- %1 - property name + +:: + + PROPERTY_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' property was not found.", + messageId: "SVC4100" + } + +-----------SVC4101--------------------------- +============================================= + +- %1 - property name + +:: + + PROPERTY_ALREADY_EXIST: { + code: 409, + message: "Error: Property with '%1' name already exists.", + messageId: "SVC4101" + } + +-----------SVC4102--------------------------- +============================================= + +- %1 - capability type name + +:: + + CAPABILITY_TYPE_ALREADY_EXIST: { + code: 409, + message: "Error: Capability Type with name '%1' already exists.", + messageId: "SVC4102" + } + +-----------SVC4114--------------------------- +============================================= + +:: + + AUTH_FAILED_INVALIDE_HEADER: { + code: 400, + message: "Error: Invalid Authorization header.", + messageId: "SVC4114" + } + +-----------SVC4115--------------------------- +============================================= + +- %1 - capability type name + +:: + + MISSING_CAPABILITY_TYPE: { + code: 400, + message: "Error: Invalid Content. Missing Capability Type '%1'.", + messageId: "SVC4115" + } + +-----------SVC4116--------------------------- +============================================= + +:: + + RESOURCE_INSTANCE_BAD_REQUEST: { + code: 400, + message: "Error: Invalid Content.", + messageId: "SVC4116" + } + +-----------SVC4117--------------------------- +============================================= + +- %1 - resource instance name +- %2 - resource instance name +- %3 - requirement name + +:: + + RESOURCE_INSTANCE_MATCH_NOT_FOUND: { + code: 404, + message: "Error: Match not found between resource instance '%1' and resource instance '%2' for requirement '%3'.", + messageId: "SVC4117" + } + +-----------SVC4118--------------------------- +============================================= + +- %1 - resource instance name +- %2 - resource instance name +- %3 - requirement name + +:: + + RESOURCE_INSTANCE_ALREADY_EXIST: { + code: 409, + message: "Error: Resource instances '%1' and '%2' are already associated with requirement '%3'.", + messageId: "SVC4118" + } + +-----------SVC4119--------------------------- +============================================= + +- %1 - resource instance name +- %2 - resource instance name +- %3 - requirement name + +:: + + RESOURCE_INSTANCE_RELATION_NOT_FOUND: { + code: 404, + message: "Error: No relation found between resource instances '%1' and '%2' for requirement '%3'.", + messageId: "SVC4119" + } + +-----------SVC4120--------------------------- +============================================= + +- %1 - User's USER_ID + +:: + + USER_INACTIVE: { + code: 404, + message: "Error: User %1 was not found.", + messageId: "SVC4120" + } + +-----------SVC4121--------------------------- +============================================= + +- %1 - User's USER\_ID + +:: + + USER_HAS_ACTIVE_ELEMENTS: { + code: 403, + message: "Error: User with %1 ID can not be deleted since it has active elements(resources/services/artifacts).", + messageId: "SVC4121" + } + +-----------SVC4122--------------------------- +============================================= + +- %1 - artifact type + +:: + + ARTIFACT_TYPE_NOT_SUPPORTED: { + code: 400, + message: "Error: Invalid artifact type '%1'.", + messageId: "SVC4122" + } + +-----------SVC4123--------------------------- +============================================= + +:: + + ARTIFACT_LOGICAL_NAME_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Artifact logical name cannot be changed.", + messageId: "SVC4123" + } + +-----------SVC4124--------------------------- +============================================= + +:: + + MISSING_ARTIFACT_TYPE: { + code: 400, + message: "Error: Missing artifact type.", + messageId: "SVC4124" + } + +-----------SVC4125--------------------------- +============================================= + +- %1 - artifact name + +:: + + ARTIFACT_EXIST: { + code: 400, + message: "Error: Artifact '%1' already exists.", + messageId: "SVC4125" + } + +---------SVC4126------------------------------ +============================================== + +- %1 - Resource/Service/Product/... +- %2 - field (tag, vendor name...) + +:: + + INVALID_FIELD_FORMAT: { + code: 400, + message: "Error: Invalid %1 %2 format.", + messageId: "SVC4126" + } + +-----------SVC4127--------------------------- +============================================= + +:: + + ARTIFACT_INVALID_MD5: { + code: 400, + message: "Error: Invalid artifact checksum.", + messageId: "SVC4127" + } + +-----------SVC4128--------------------------- +============================================= + +:: + + MISSING_ARTIFACT_NAME: { + code: 400, + message: "Error: Invalid content. Missing artifact name.", + messageId: "SVC4128" + } + +-----------SVC4129--------------------------- +============================================= + +:: + + MISSING_PROJECT_CODE: { + code: 400, + message: "Error: Invalid Content. Missing PROJECT_CODE number.", + messageId: "SVC4129" + } + +-----------SVC4130--------------------------- +============================================= + +:: + + INVALID_PROJECT_CODE: { + code: 400, + message: "Error: Invalid Content. PROJECT_CODE must be from 3 up to 50 characters.", + messageId: "SVC4130" + } + +-----------SVC4131--------------------------- +============================================= + +- %1-resource/service +- %2-artifact/artifacts +- %3-semicolomn separated list of artifact + +:: + + COMPONENT_MISSING_MANDATORY_ARTIFACTS: { + code: 403, + message: "Error: Missing mandatory informational %1 %2: [%3].", + messageId: "SVC4131" + } + +-----------SVC4132--------------------------- +============================================= + +- %1 - lifecycle type name + +:: + + LIFECYCLE_TYPE_ALREADY_EXIST: { + code: 409, + message: "Error: Lifecycle Type with name '%1' already exists.", + messageId: "SVC4132" + } + +-----------SVC4133--------------------------- +============================================= + +- %1 - service version +- %2 - service name + +:: + + SERVICE_NOT_AVAILABLE_FOR_DISTRIBUTION: { + code: 403, + message: "Error: Version %1 of '%2' service is not available for distribution.", + messageId: "SVC4133" + } + +-----------SVC4134--------------------------- +============================================= + +:: + + MISSING_LIFECYCLE_TYPE: { + code: 400, + message: "Error: Invalid Content. Missing interface life-cycle type.", + messageId: "SVC4134" + } + +---------SVC4135------------------------------ +============================================== + +:: + + SERVICE_CATEGORY_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Service category cannot be changed once the service is certified.", + messageId: "SVC4135" + } + +---------SVC4136------------------------------ +============================================== + +- %1 - distribution environment name + +:: + + DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE: { + code: 500, + message: "Error: Requested distribution environment '%1' is not available.", + messageId: "SVC4136" + } + +---------SVC4137------------------------------ +============================================== + +- %1 - distribution environment name + +:: + + DISTRIBUTION_ENVIRONMENT_NOT_FOUND: { + code: 400, + message: "Error: Requested distribution environment '%1' was not found.", + messageId: "SVC4137" + } + +---------SVC4138------------------------------ +============================================== + +:: + + DISTRIBUTION_ENVIRONMENT_INVALID: { + code: 400, + message: "Error: Invalid distribution environment.", + messageId: "SVC4138" + } + +---------SVC4139------------------------------ +============================================== + +- %1 - service name + +:: + + DISTRIBUTION_ARTIFACT_NOT_FOUND: { + code: 409, + message: "Error: Service '%1' cannot be distributed due to missing deployment artifacts.", + messageId: "SVC4139" + } + +---------SVC4200------------------------------ +============================================== + +- %1 - Service/Resource +- %2 - max icon name length + +:: + + COMPONENT_ICON_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. %1 icon name exceeds limit of %2 characters.", + messageId: "SVC4200" + } + +---------SVC4300------------------------------ +============================================== + +:: + + RESTRICTED_ACCESS: { + code: 403, + message: "Error: Restricted access.", + messageId: "SVC4300" + } + +---------SVC4301------------------------------ +============================================== + +:: + + RESTRICTED_OPERATION: { + code: 409, + message: "Error: Restricted operation.", + messageId: "SVC4301" + } + +---------SVC4500------------------------------ +============================================== + +:: + + MISSING_BODY: { + code: 400 , + message: "Error: Missing request body.", + messageId: "SVC4500" + } + +---------SVC4501------------------------------ +============================================== + +:: + + MISSING_PUBLIC_KEY: { + code: 400 , + message: "Error: Invalid Content. Missing mandatory parameter 'apiPublicKey'." , + messageId: "SVC4501" + } + +---------SVC4502------------------------------ +============================================== + +:: + + DISTRIBUTION_ENV_DOES_NOT_EXIST: { + code: 400 , + message: "Error: Invalid Body : Missing mandatory parameter 'distrEnvName'." , + messageId: "SVC4502" + } + +-----------SVC4503--------------------------- +============================================= + +- %1 - service name + +:: + + SERVICE_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' service was not found.", + messageId: "SVC4503" + } + +---------SVC4504------------------------------ +============================================== + +- %1 - Service/Resource +- %2 - service/resource version + +:: + + COMPONENT_VERSION_NOT_FOUND: { + code: 404, + message: "Error: %1 version %2 was not found.", + messageId: "SVC4504" + } + +-----------SVC4505--------------------------- +============================================= + +- %1 - artifact name + +:: + + ARTIFACT_NOT_FOUND: { + code: 404, + message: "Error: Artifact '%1' was not found.", + messageId: "SVC4505" + } + +---------SVC4506------------------------------ +============================================== + +:: + + MISSING_ENV_NAME: { + code: 400 , + message: "Error: Invalid Content. Missing mandatory parameter 'distrEnvName'.", + messageId: "SVC4506" + } + +---------SVC4507------------------------------ +============================================== + +:: + + COMPONENT_INVALID_TAGS_NO_COMP_NAME: { + code: 400, + message: "Error: Invalid Content. One of the tags should be the component name.", + messageId: "SVC4507" + } + +---------SVC4508------------------------------ +============================================== + +:: + + SERVICE_NAME_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Service name cannot be changed once the service is certified.", + messageId: "SVC4508" + } + +---------SVC4509------------------------------ +============================================== + +:: + + SERVICE_ICON_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Icon cannot be changed once the service is certified.", + messageId: "SVC4509" + } + +---------SVC4510------------------------------ +============================================== + +- %1 - icon name max length + +:: + + SERVICE_ICON_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Icon name exceeds limit of %1 characters.", + messageId: "SVC4510" + } + +---------SVC4511------------------------------ +============================================== + +:: + + DISTRIBUTION_REQUESTED_NOT_FOUND: { + code: 404, + message: "Error: Requested distribution was not found.", + messageId: "SVC4511" + } + +---------SVC4512------------------------------ +============================================== + +- %1 - Distribution ID + +:: + + DISTRIBUTION_REQUESTED_FAILED: { + code: 403, + message: "Error: Requested distribution '%1' failed.", + messageId: "SVC4512" + } + +---------SVC4513------------------------------ +============================================== + +:: + + RESOURCE_CATEGORY_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Resource category cannot be changed once the resource is certified.", + messageId: "SVC4513" + } + +---------SVC4514------------------------------ +============================================== + +:: + + RESOURCE_NAME_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Resource name cannot be changed once the resource is certified.", + messageId: "SVC4514" + } + +---------SVC4515------------------------------ +============================================== + +:: + + RESOURCE_ICON_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Icon cannot be changed once the resource is certified.", + messageId: "SVC4515" + } + +---------SVC4516------------------------------ +============================================== + +:: + + RESOURCE_VENDOR_NAME_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Vendor name cannot be changed once the resource is certified.", + messageId: "SVC4516" + } + +---------SVC4517------------------------------ +============================================== + +:: + + RESOURCE_DERIVED_FROM_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: Derived from resource template cannot be changed once the resource is certified.", + messageId: "SVC4517" + } + +---------SVC4518------------------------------ +============================================== + +- %1 - max length + +:: + + COMPONENT_SINGLE_TAG_EXCEED_LIMIT: { + code: 400, + message: "Error: Invalid Content. Single tag exceeds limit of %1 characters.", + messageId: "SVC4518" + } + +---------SVC4519------------------------------ +============================================== + +:: + + INVALID_DEFAULT_VALUE: { + code: 400, + message: "Error: mismatch in data-type occurred for property %1. data type is %2 and default value found is %3.", + messageId: "SVC4519" + } + +---------SVC4520------------------------------ +============================================== + +- %1 - service\resource + +:: + + ADDITIONAL_INFORMATION_MAX_NUMBER_REACHED: { + code: 409, + message: "Error: Maximal number of additional %1 parameters was reached.", + messageId: "SVC4520" + } + +---------SVC4521------------------------------ +============================================== + +:: + + ADDITIONAL_INFORMATION_EMPTY_STRING_NOT_ALLOWED: { + code: 400, + message: "Error: Invalid Content. The Additional information label and value cannot be empty.", + messageId: "SVC4521" + } + +---------SVC4522------------------------------ +============================================== + +- %1 - label/value +- %2 - Maximal length of %1 + +:: + + ADDITIONAL_INFORMATION_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Additional information %1 exceeds limit of %2 characters.", + messageId: "SVC4522" + } + +---------SVC4523------------------------------ +============================================== + +:: + + ADDITIONAL_INFORMATION_KEY_NOT_ALLOWED_CHARACTERS: { + code: 400, + message: 'Error: Invalid Content. Additional information label is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4523" + } + +---------SVC4524------------------------------ +============================================== + +:: + + ADDITIONAL_INFORMATION_NOT_FOUND: { + code: 409, + message: "Error: Requested additional information was not found.", + messageId: "SVC4524" + } + +---------SVC4525------------------------------ +============================================== + +:: + + ADDITIONAL_INFORMATION_VALUE_NOT_ALLOWED_CHARACTERS: { + code: 400, + message: 'Error: Invalid Content. Additional information contains non-english characters.', + messageId: "SVC4525" + } + +---------SVC4526------------------------------ +============================================== + +:: + + RESOURCE_INSTANCE_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' resource instance was not found.", + messageId: "SVC4526" + } + +---------SVC4527------------------------------ +============================================== + +:: + + ASDC_VERSION_NOT_FOUND: { + code: 500, + message: 'Error: ASDC version cannot be displayed.', + messageId: "SVC4527" + } + +---------SVC4528------------------------------ +============================================== + +- %1-artifact url/artifact label/artifact description/VNF Service Indicator + +:: + + MISSING_DATA: { + code: 400, + message: "Error: Invalid content. Missing %1.", + messageId: "SVC4528" + } + +---------SVC4529------------------------------ +============================================== + +- %1-artifact url/artifact label/artifact description/artifact name +- %2 - Maximal length of %1 + +:: + + EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. %1 exceeds limit of %2 characters.", + messageId: "SVC4529" + } + +---------SVC4530------------------------------ +============================================== + +:: + + ARTIFACT_INVALID_TIMEOUT: { + code: 400, + message: "Error: Invalid Content. Artifact Timeout should be set to valid positive non-zero number of minutes.", + messageId: "SVC4530" + } + +---------SVC4531------------------------------ +============================================== + +:: + + SERVICE_IS_VNF_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: VNF Indicator cannot be updated for certified service.", + messageId: "SVC4531" + } + +---------SVC4532------------------------------ +============================================== + +:: + + RESOURCE_INSTANCE_NOT_FOUND_ON_SERVICE: { + code: 404, + message: "Error: Requested '%1' resource instance was not found on the service '%2.", + messageId: "SVC4532" + } + +---------SVC4533------------------------------ +============================================== + +- %1 - artifact name("HEAT"/"HEAT_ENV"/"MURANO_PKG"/"YANG_XML") + +:: + + WRONG_ARTIFACT_FILE_EXTENSION: { + code: 400, + message: "Error: Invalid file extension for %1 artifact type.", + messageId: "SVC4533" + } + +---------SVC4534------------------------------ +============================================== + +- %1 - "HEAT"/"HEAT_ENV" + +:: + + INVALID_YAML: { + code: 400, + message: "Error: Uploaded YAML file for %1 artifact is invalid.", + messageId: "SVC4534" + } + +---------SVC4535------------------------------ +============================================== + +- %1 - "HEAT" + +:: + + INVALID_DEPLOYMENT_ARTIFACT_HEAT: { + code: 400, + message: "Error: Invalid %1 artifact.", + messageId: "SVC4535" + } + +---------SVC4536------------------------------ +============================================== + +- %1 - Resource/Service +- %2 - Resource/Service name +- %3 - "HEAT"/"HEAT_ENV"/"MURANO_PKG" +- %4 - "HEAT"/"HEAT_ENV"/"MURANO_PKG + +:: + + DEPLOYMENT_ARTIFACT_OF_TYPE_ALREADY_EXISTS: { + code: 400, + message: "Error: %1 '%2' already has a deployment artifact of %3 type .Please delete or update an existing %4 artifact.", + messageId: "SVC4536" + } + +---------SVC4537------------------------------ +============================================== + +:: + + MISSING_HEAT: { + code: 400, + message: "Error: Missing HEAT artifact. HEAT_ENV artifact cannot be uploaded without corresponding HEAT template.", + messageId: "SVC4537" + } + +---------SVC4538------------------------------ +============================================== + +:: + + MISMATCH_HEAT_VS_HEAT_ENV: { + code: 400, + message: "Error: Invalid artifact content. Parameter's set in HEAT_ENV '%1' artifact doesn't match the parameters in HEAT '%2' artifact.", + messageId: "SVC4538" + } + +---------SVC4539------------------------------ +============================================== + +:: + + INVALID_RESOURCE_PAYLOAD: { + code: 400, + message: "Error: Invalid resource payload.", + messageId: "SVC4539" + } + +---------SVC4540------------------------------ +============================================== + +:: + + INVALID_TOSCA_FILE_EXTENSION: { + code: 400, + message: "Error: Invalid file extension for TOSCA template.", + messageId: "SVC4540" + } + +---------SVC4541------------------------------ +============================================== + +:: + + INVALID_YAML_FILE: { + code: 400, + message: "Error: Invalid YAML file.", + messageId: "SVC4541" + } + +---------SVC4542------------------------------ +============================================== + +:: + + INVALID_TOSCA_TEMPLATE: { + code: 400, + message: "Error: Invalid TOSCA template.", + messageId: "SVC4542" + } + +---------SVC4543------------------------------ +============================================== + +:: + + NOT_RESOURCE_TOSCA_TEMPLATE: { + code: 400, + message: "Error: Imported Service TOSCA template.", + messageId: "SVC4543" + } + +---------SVC4544------------------------------ +============================================== + +:: + + NOT_SINGLE_RESOURCE: { + code: 400, + message: "Error: Imported TOSCA template should contain one resource definition.", + messageId: "SVC4544" + } + +---------SVC4545------------------------------ +============================================== + +:: + + INVALID_RESOURCE_NAMESPACE: { + code: 400, + message: "Error: Invalid resource namespace.", + messageId: "SVC4545" + } + +---------SVC4546------------------------------ +============================================== + +:: + + RESOURCE_ALREADY_EXISTS: { + code: 400, + message: "Error: Imported resource already exists in ASDC Catalog.", + messageId: "SVC4546" + } + +---------SVC4549------------------------------ +============================================== + +:: + + INVALID_RESOURCE_CHECKSUM: { + code: 400, + message: "Error: Invalid resource checksum.", + messageId: "SVC4549" + } + +---------SVC4550------------------------------ +============================================== + +- %1 - Consumer salt + +:: + + INVALID_LENGTH: { + code: 400, + message: "Error: Invalid %1 length.", + messageId: "SVC4550" + } + +---------SVC4551------------------------------ +============================================== + +- %1 - ECOMP User name + +:: + + ECOMP_USER_NOT_FOUND: { + code: 404, + message: "Error: ECOMP User '%1' was not found.", + messageId: "SVC4551" + } + +---------SVC4552------------------------------ +============================================== + +:: + + CONSUMER_ALREADY_EXISTS: { + code: 409, + message: "Error: ECOMP User already exists.", + messageId: "SVC4552" + } + +---------SVC4553----------------------------- +============================================= + +- %1 - Consumer name / Consumer password/ Consumer salt + +:: + + INVALID_CONTENT_PARAM: { + code: 400, + message: "Error: %1 is invalid.", + messageId: "SVC4553" + } + +---------SVC4554------------------------------ +============================================== + +- %1 - "Resource"/"Service" + +:: + + COMPONENT_ARTIFACT_NOT_FOUND: { + code: 404, + message: "Error: Requested artifact doesn't belong to specified %1.", + messageId: "SVC4554" + } + +---------SVC4554------------------------------ +============================================== + +- %1 - "Service name" + +:: + + SERVICE_DEPLOYMENT_ARTIFACT_NOT_FOUND: { + code: 403, + message: "Error: Requested '%1' service is not ready for certification. Service has to have at least one deployment artifact.", + messageId: "SVC4554" + } + +---------SVC4555------------------------------ +============================================== + +- %1 - Resource/Service/Product +- %2 - Category" + +:: + + COMPONENT_ELEMENT_INVALID_NAME_LENGTH: { + code: 400, + message: "Error: Invalid %1 %2 name length.", + messageId: "SVC4555" + } + +---------SVC4556------------------------------ +============================================== + +%1 - Resource/Service/Product +%2 - Category" + +:: + + COMPONENT_ELEMENT_INVALID_NAME_FORMAT: { + code: 400, + message: "Error: Invalid %1 %2 name format.", + messageId: "SVC4556" + } + +---------SVC4557------------------------------ +============================================== + +- %1 - Resource/Service/Product +- %2 - Category name" + +:: + + COMPONENT_CATEGORY_ALREADY_EXISTS: { + code: 409, + message: "Error: %1 category name '%2' already exists.", + messageId: "SVC4557" + } + +---------SVC4558------------------------------ +============================================== + +- %1 - service/VF +- %2 - Resource name + +:: + + VALIDATED_RESOURCE_NOT_FOUND: { + code: 403, + message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource.", + messageId: "SVC4558" + } + +---------SVC4559------------------------------ +============================================== + +- %1 - Service/VF +- %2 - Resource name + +:: + + FOUND_ALREADY_VALIDATED_RESOURCE: { + code: 403, + message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource. Please use already available validated resource version.", + messageId: "SVC4559" + } + +---------SVC4560------------------------------ +============================================== + +- %1 - Service/VF +- %2 - Resource name + +:: + + FOUND_LIST_VALIDATED_RESOURCES: { + code: 403, + message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource. Please use one of available validated resource versions.", + messageId: "SVC4560" + } + +---------SVC4561------------------------------ +============================================== + +- %1 - Resource/Product +- %2 - Category +- %3 - Category name + +:: + + COMPONENT_CATEGORY_NOT_FOUND: { + code: 404, + message: "Error: Requested %1 %2 '%3' was not found.", + messageId: "SVC4561" + } + +---------SVC4562------------------------------ +============================================== + +- %1 - Resource/Product +- %2 - Sub-Category name +- %3 - Category name + +:: + + COMPONENT_SUB_CATEGORY_EXISTS_FOR_CATEGORY: { + code: 409, + message: "Error: %1 sub-category '%2' already exists under '%3' category.", + messageId: "SVC4562" + } + +---------SVC4563------------------------------ +============================================== + +- %1 - Product +- %2 - Grouping name +- %3 - Sub-Category name + +:: + + COMPONENT_GROUPING_EXISTS_FOR_SUB_CATEGORY: { + code: 409, + message: "Error: %1 grouping '%2' already exists under '%3' sub-category.", + messageId: "SVC4563" + } + +---------SVC4564------------------------------ +============================================== + +- %1 - Product name + +:: + + PRODUCT_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' product was not found.", + messageId: "SVC4564" + } + +---------SVC4565------------------------------ +============================================== + +- %1 - "HEAT" +- %2 - Parameter type ("string" , "boolean" , "number") +- %3 - Parameter name + +:: + + INVALID_HEAT_PARAMETER_VALUE: { + code: 400, + message: "Error: Invalid %1 artifact. Invalid %2 value set for '%3' parameter.", + messageId: "SVC4565" + } + +---------SVC4566------------------------------ +============================================== + +- %1 - "HEAT" +- %2 - Parameter type ("string" , "boolean" , "number") + +:: + + INVALID_HEAT_PARAMETER_TYPE: { + code: 400, + message: "Error: Invalid %1 artifact. Unsupported '%2' parameter type.", + messageId: "SVC4566" + } + +---------SVC4567------------------------------ +============================================== + +- %1 - "YANG_XML" + +:: + + INVALID_XML: { + code: 400, + message: "Error: Uploaded XML file for %1 artifact is invalid.", + messageId: "SVC4567" + } + +---------SVC4567------------------------------ +============================================== + +- %1 - User Name and UserId +- %2 - Checked-out/In-certification + +:: + + CANNOT_DELETE_USER_WITH_ACTIVE_ELEMENTS: { + code: 409, + message: "Error: User cannot be deleted. User '%1' has %2 projects.", + messageId: "SVC4567" + } + +---------SVC4568------------------------------ +============================================== + +- %1 - User Name and UserId +- %2 - Checked-out/In-certification + +:: + + CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS: { + code: 409, + message: "Error: Role cannot be changed. User '%1' has %2 projects.", + messageId: "SVC4568" + } + +---------SVC4570------------------------------ +============================================== + +:: + + UPDATE_USER_ADMIN_CONFLICT: { + code: 409, + message: "Error: An administrator is not allowed to change his/her role.", + messageId: "SVC4570" + } + +---------SVC4571------------------------------ +============================================== + +:: + + SERVICE_CANNOT_CONTAIN_SUBCATEGORY: { + code: 400, + message: "Error: Sub category cannot be defined for service", + messageId: "SVC4571" + } + +---------SVC4572------------------------------ +============================================== + +- %1 - Resource/Service + +:: + + COMPONENT_TOO_MUCH_CATEGORIES: { + code: 400, + message: "Error: %1 must have only 1 category", + messageId: "SVC4572" + } + +---------SVC4574------------------------------ +============================================== + +:: + + RESOURCE_TOO_MUCH_SUBCATEGORIES: { + code: 400, + message: "Error: Resource must have only 1 sub category", + messageId: "SVC4574" + } + +---------SVC4575------------------------------ +============================================== + +:: + + COMPONENT_MISSING_SUBCATEGORY: { + code: 400, + message: "Error: Missing sub category", + messageId: "SVC4575" + } + +---------SVC4576------------------------------ +============================================== + +- %1 - Component type + +:: + + UNSUPPORTED_ERROR: { + code: 400, + message: "Error : Requested component type %1 is unsupported.", + messageId: "SVC4576" + } + +---------SVC4577------------------------------ +============================================== + +- %1 - Resource type + +:: + + RESOURCE_CANNOT_CONTAIN_RESOURCE_INSTANCES: { + code: 409, + message: "Error : Resource of type %1 cannot contain resource instances.", + messageId: "SVC4577" + } + +---------SVC4578------------------------------ +============================================== + +- %1 - Resource/Service +- %2 - Resource/Service name +- %3 - Artifact name + +:: + + DEPLOYMENT_ARTIFACT_NAME_ALREADY_EXISTS: { + code: 400, + message: "Error: %1 '%2' already has a deployment artifact named '%3'.", + messageId: "SVC4578" + } + +---------SVC4579------------------------------ +============================================== + +- %1 - "Category/Sub-Category/Group" +- %2 - Category/Sub-Category/Grouping name. + +:: + + INVALID_GROUP_ASSOCIATION: { + code: 400, + message: "Error: Invalid group association. %1 '%2' was not found.", + messageId: "SVC4579" + } + +---------SVC4580------------------------------ +============================================== + +:: + + EMPTY_PRODUCT_CONTACTS_LIST: { + code: 400, + message: "Error: Invalid content. At least one Product Contact has to be specified.", + messageId: "SVC4580" + } + +---------SVC4581------------------------------ +============================================== + +- %1 - UserId + +:: + + INVALID_PRODUCT_CONTACT: { + code: 400, + message: "Error: Invalid content. User '%1' cannot be set as Product Contact.", + messageId: "SVC4581" + } + +---------SVC4582------------------------------ +============================================== + +- %1 - Product +- %2 - Aabbreviated/Full" + +:: + + MISSING_ONE_OF_COMPONENT_NAMES: { + code: 400, + message: "Error: Invalid content. Missing %1 %2 name.", + messageId: "SVC4582" + } + +---------SVC4583------------------------------ +============================================== + +- %1 - Icon +- %2 - Resource/Service/Product + +:: + + COMPONENT_PARAMETER_CANNOT_BE_CHANGED: { + code: 400, + message: "Error: %1 cannot be changed once the %2 is certified.", + messageId: "SVC4583" + } + +---------SVC4584------------------------------ +============================================== + +- %1 - Service/VF name +- %2 - Service/VF +- %3 - Resource instance origin type +- %4 - Resource instance name +- %5 - Requirement/Capability +- %6 - Requirement/Capability name +- %7 - Fulfilled" (for req)/Consumed (forcap) + +:: + + REQ_CAP_NOT_SATISFIED_BEFORE_CERTIFICATION: { + code: 403, + message: "Error: Requested '%1' %2 is not ready for certification. %3'%4' has to have %5 '%6' %7.", + messageId: "SVC4584" + } + +---------SVC4585------------------------------ +============================================== + +:: + + INVALID\_OCCURRENCES: { + code: 400, + message: "Error: Invalid occurrences format.", + messageId: "SVC4585" + } + +---------SVC4586------------------------------ +============================================== + +:: + + INVALID_SERVICE_API_URL:{ + code: 400, + message: 'Error: Invalid Service API URL. Please check whether your URL has a valid domain extension + 'and does not contain the following characters - #?&@%+;,=$<>~^\`[]{}\|"\*!', + messageId: "SVC4586" + } + +---------SVC4587------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_ALREADY_EXIST: { + code: 409, + message: 'Error: Data type %1 already exists.', + messageId: "SVC4587" + } + +---------SVC4588------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_NOR_PROPERTIES_NEITHER_DERIVED_FROM: { + code: 400, + message: 'Error: Invalid Data type %1. Data type must have either a valid derived from declaration or at least one valid property', + messageId: "SVC4588" + } + +---------SVC4589------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_PROPERTIES_CANNOT_BE_EMPTY: { + code: 400, + message: "Error: Invalid Data type %1. 'properties' parameter cannot be empty if provided.", + messageId: "SVC4589" + } + +---------SVC4590------------------------------ +============================================== + +- %1 - Property type name +- %2 - Property name + +:: + + INVALID_PROPERTY_TYPE: { + code: 400, + message: "Error: Invalid Property type %1 in property %2.", + messageId: "SVC4590" + } + +---------SVC4591------------------------------ +============================================== + +- %1 - Property inner type +- %2 - Property name + +:: + + INVALID_PROPERTY_INNER_TYPE: { + code: 400, + message: "Error: Invalid property inner type %1, in property %2", + messageId: "SVC4591" + } + +---------SVC4592------------------------------ +============================================== + +- %1 - Component instance name +- %2 - Resource instance/Service instance + +:: + + COMPONENT_INSTANCE_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' %2 was not found.", + messageId: "SVC4592" + } + +---------SVC4593------------------------------ +============================================== + +- %1 - Component instance name +- %2 - Resource instance/Service instance +- %3 - Resource/Service/Product +- %4 - Container name + +:: + + COMPONENT_INSTANCE_NOT_FOUND_ON_CONTAINER: { + code: 404, + message: "Error: Requested '%1' %2 was not found on the %3 '%4'.", + messageId: "SVC4593" + } + +---------SVC4594------------------------------ +============================================== + +- %1 - Requirement/Capability +- %2 - Requirement name + +:: + + IMPORT_DUPLICATE_REQ_CAP_NAME: { + code: 400, + message: "Error: Imported TOSCA template contains more than one %1 named '%2'.", + messageId: "SVC4594" + } + +---------SVC4595------------------------------ +============================================== + +- %1 - Requirement/Capability +- %2 - Requirement name +- %3 - Parent containing the requirement + +:: + + IMPORT_REQ_CAP_NAME_EXISTS_IN_DERIVED: { + code: 400, + message: "Error: Imported TOSCA template contains %1 '%2' that is already defined by derived template %3.", + messageId: "SVC4595" + } + +---------SVC4596------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_DERIVED_IS_MISSING: { + code: 400, + message: "Error: Invalid Content. The ancestor data type %1 cannot be found in the system.", + messageId: "SVC4596" + } + +---------SVC4597------------------------------ +============================================== + +- %1 - Data type name +- %2 - Property names + +:: + + DATA_TYPE_PROPERTY_ALREADY_DEFINED_IN_ANCESTOR: { + code: 400, + message: "Error: Invalid Content. The data type %1 contains properties named %2 which are already defined in one of its ancestors.", + messageId: "SVC4597" + } + +---------SVC4598------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_DUPLICATE_PROPERTY: { + code: 400, + message: "Error: Invalid Content. The data type %1 contains duplicate property.", + messageId: "SVC4598" + } + +---------SVC4599------------------------------ +============================================== + +- %1 - Data type name +- %2 - Property names + +:: + + DATA_TYPE_PROEPRTY_CANNOT_HAVE_SAME_TYPE_OF_DATA_TYPE: { + code: 400, + message: "Error: Invalid Content. The data type %1 contains properties %2 which their type is this data type.", + messageId: "SVC4599" + } + +---------SVC4600------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_CANNOT_HAVE_PROPERTIES: { + code: 400, + message: "Error: Invalid Content. The data type %1 cannot have properties since it is of type scalar", + messageId: "SVC4600" + } + +---------SVC4601------------------------------ +============================================== + +:: + + NOT_TOPOLOGY_TOSCA_TEMPLATE: { + code: 400, + message: "Error: TOSCA yaml file %1 cannot be modeled to VF as it does not contain 'topology_template.", + messageId: "SVC4601" + } + +---------SVC4602-------------------------------- +================================================ + +- %1 - YAML file name +- %2 - Node_Template label +- %3 - Node_Template type + +:: + + INVALID_NODE_TEMPLATE: { + code: 400, + message: "Error: TOSCA yaml file '%1' contains node_template '%2' of type '%3' that does not represent existing VFC/CP/VL", + messageId: "SVC4602" + } + +---------SVC4603------------------------------ +============================================== + +- %1 - Component type +- %2 - Component name +- %3 - State + +:: + + ILLEGAL_COMPONENT_STATE: { + code: 403, + message: "Error: Component instance of %1 can not be created because the component '%2' is in an illegal state %3.", + messageId: "SVC4603" + } + +---------SVC4604------------------------------ +============================================== + +- %1 - CSAR file name + +:: + + CSAR_INVALID: { + code: 400, + message: "Error: TOSCA CSAR '%1' is invalid. 'TOSCA-Metadata/Tosca.meta' file must be provided.", + messageId: "SVC4604" + } + +---------SVC4605------------------------------ +============================================== + +- %1 - CSAR file name + +:: + + CSAR_INVALID_FORMAT: { + code: 400, + message: "Error: TOSCA CSAR '%1' is invalid. Invalid 'TOSCA-Metadata/Tosca.meta' file format.", + messageId: "SVC4605" + } + +---------SVC4606------------------------------ +============================================== + +- %1 - Property name +- %2 - Property type +- %3 - Property innerType +- %4 - Default value + +:: + + INVALID_COMPLEX_DEFAULT_VALUE: { + code: 400, + message: "Error: Invalid default value of property %1. Data type is %2 with inner type %3 and default value found is %4.", + messageId: "SVC4606" + } + +---------SVC4607------------------------------ +============================================== + +- %1 - csar file name + +:: + + CSAR_NOT_FOUND: { + code: 400, + message: "Error: TOSCA CSAR '%1' is not found.", + messageId: "SVC4607" + } + +---------SVC4608------------------------------ +============================================== + +- %1 - Artifact name +- %2 - Component type +- %3 - Actual component type + +:: + + MISMATCH_BETWEEN_ARTIFACT_TYPE_AND_COMPONENT_TYPE: { + code: 400, + message: "Error: Artifact %1 is only compatible with component of type %2, but component type is %3.", + messageId: "SVC4608" + } + +---------SVC4609------------------------------ +============================================== + +- %1 - INVALID_JSON + +:: + + INVALID_JSON: { + code: 400, + message: "Error: Uploaded JSON file for %1 artifact is invalid.", + messageId: "SVC4609" + } + +---------SVC4610------------------------------ +============================================== + +- %1 - CSAR file name +- %2 - Missing file name + +:: + + YAML_NOT_FOUND_IN_CSAR: { + code: 400, + message: "Error - TOSCA CSAR %1 is invalid. TOSCA-Metadata/Tosca.meta refers to file %2 that is not provided.", + messageId: "SVC4610" + } + +---------SVC4611------------------------------ +============================================== + +- %1 - Group name + +:: + + GROUP_MEMBER_EMPTY: { + code: 400, + message: "Error: Invalid Content. Group %1 member list was provided but does not have values", + messageId: "SVC4611" + } + +---------SVC4612------------------------------ +============================================== + +- %1 - Group name + +:: + + GROUP_TYPE_ALREADY_EXIST: { + code: 409, + message: 'Error: Group type %1 already exists.', + messageId: "SVC4612" + } + +---------SVC4613------------------------------ +============================================== + +- %1 - Group name +- %2 - VF name(component name) +- %3 - Actual component type [VF] + +:: + + GROUP_ALREADY_EXIST: { + code: 409, + message: "Error: Group with name '%1' already exists in %2 %3.", + messageId: "SVC4613" + } + +---------SVC4614------------------------------ +============================================== + +- %1 - Group type + +:: + + GROUP_TYPE_IS_INVALID: { + code: 400, + message: "Error: Invalid content. Group type %1 does not exist", + messageId: "SVC4614" + } + +---------SVC4615------------------------------ +============================================== + +- %1 - group name + +:: + + GROUP_MISSING_GROUP_TYPE: { + code: 400, + message: "Error: Invalid Content. Missing Group Type for group '%1'", + messageId: "SVC4615" + } + +---------SVC4616------------------------------ +============================================== + +- %1 - Member name +- %2 - Group name +- %3 - VF name +- %4 - Component type [VF ] + +:: + + GROUP_INVALID_COMPONENT_INSTANCE: { + code: 400, + message: "Error: Member '%1' listed in group '%2' is not part of '%3' %4.", + messageId: "SVC4616" + } + +---------SVC4617------------------------------ +============================================== + +- %1 - Member name +- %2 - Group name +- %3 - Group type + +:: + + GROUP_INVALID_TOSCA_NAME_OF_COMPONENT_INSTANCE: { + code: 400, + message: "Error: member %1 listed in group %2 is not part of allowed members of group type %3.", + messageId: "SVC4617" + } + +---------SVC4618------------------------------ +============================================== + +- %1 - Missing file name +- %2 - CSAR file name + +:: + + ARTIFACT_NOT_FOUND_IN_CSAR: { + code: 400, + message: "Error: artifact %1 is defined in CSAR %2 manifest but is not provided", + messageId: "SVC4618" + } + +---------SVC4619------------------------------ +============================================== + +- %1 - Artifact name +- %2 - Artifact type +- %3 - Existing artifact type + +:: + + ARTIFACT_ALRADY_EXIST_IN_DIFFERENT_TYPE_IN_CSAR: { + code: 400, + message: "Error: artifact %1 in type %2 already exists in type %3.", + messageId: "SVC4619" + } + +---------SVC4620------------------------------ +============================================== + +:: + + FAILED_RETRIVE_ARTIFACTS_TYPES: { + code: 400, + message: "Error: Failed to retrieve list of suported artifact types.", + messageId: "SVC4620" + } + +---------SVC4621------------------------------ +============================================== + +- %1 - Artifact name +- %2 - Master + +:: + + ARTIFACT_ALRADY_EXIST_IN_MASTER_IN_CSAR: { + code: 400, + message: "Error: artifact %1 already exists in master %2 .", + messageId: "SVC4621" + } + +---------SVC4622------------------------------ +============================================== + +- %1 - Artifact name +- %2 - Artifact type +- %3 - Master name +- %4 - Master type + +:: + + ARTIFACT_NOT_VALID_IN_MASTER: { + code: 400, + message: "Error: artifact %1 in type %2 can not be exists under master %3 in type %4.", + messageId: "SVC4622" + } + +---------SVC4623------------------------------ +============================================== + +- %1 - Artifact name +- %2 - Artifact type +- %3 - Env name +- %4 - Existing env + +:: + + ARTIFACT_NOT_VALID_ENV: { + code: 400, + message: "Error: Artifact %1 in type %2 with env %3 already exists with another env %4", + messageId: "SVC4623" + } + +---------SVC4624------------------------------ +============================================== + +- %1 - Groups names +- %2 - VF name +- %3 - Component type [VF ] + +:: + + GROUP_IS_MISSING: { + code: 400, + message: "Error: Invalid Content. The groups '%1' cannot be found under %2 %3.", + messageId: "SVC4624" + } + +---------SVC4625------------------------------ +============================================== + +- %1 - Groups name + +:: + + GROUP_ARTIFACT_ALREADY_ASSOCIATED: { + code: 400, + message: "Error: Invalid Content. Artifact already associated to group '%1'.", + messageId: "SVC4625" + } + +---------SVC4626------------------------------ +============================================== + +- %1 - Groups name + +:: + + GROUP_ARTIFACT_ALREADY_DISSOCIATED: { + code: 400, + message: "Error: Invalid Content. Artifact already dissociated from group '%1'.", + messageId: "SVC4626" + } + +---------SVC4627------------------------------ +============================================== + +- %1 - Property name +- %2 - Group name +- %3 - Group type name + +:: + + GROUP_PROPERTY_NOT_FOUND: { + code: 400, + message: "Error: property %1 listed in group %2 is not exist in group type %3.", + messageId: "SVC4627" + } + +---------SVC4628------------------------------ +============================================== + +- %1 - CSAR UUID +- %2 - VF name + +:: + + VSP_ALREADY_EXISTS: { + code: 400, + message: "Error: The VSP with UUID %1 was already imported for VF %2. Please select another or update the existing VF.", + messageId: "SVC4628" + } + +---------SVC4629------------------------------ +============================================== + +- %1 - VF name + +:: + + MISSING_CSAR_UUID: { + code: 400, + message: "Error: The Csar UUID or payload name is missing for VF %1.", + messageId: "SVC4629" + } + +---------SVC4630------------------------------ +============================================== + +- %1 - VF name +- %2 - New CSAR UUID +- %3 - Old CSAR UUID + +:: + + RESOURCE_LINKED_TO_DIFFERENT_VSP: { + code: 400, + message: "Error: Resource %1 cannot be updated using CsarUUID %2 since the resource is linked to a different VSP with csarUUID %3.", + messageId: "SVC4630" + } + +---------SVC4631------------------------------ +============================================== + +- %1 - Policy name + +:: + + POLICY_TYPE_ALREADY_EXIST: { + code: 409, + message: "Error: Policy type %1 already exists.", + messageId: "SVC4631" + } + +---------SVC4632------------------------------ +============================================== + +- %1 - Target name +- %2 - Policy type name + +:: + + TARGETS_NON_VALID: { + code: 400, + message: "Error: target %1 listed in policy type %2 is not a group or resource.", + messageId: "SVC4632" + } + +---------SVC4633------------------------------ +============================================== + +- %1 - Policy name + +:: + + TARGETS_EMPTY: { + code: 400, + message: "Error: Invalid Content. Policy %1 target list was provided but does not have values", + messageId: "SVC4633" + } + +---------SVC4634------------------------------ +============================================== + +:: + + DATA_TYPE_CANNOT_BE_EMPTY: { + code: 500, + message: "Error: Data types are empty. Please import the data types.", + messageId: "SVC4634" + } + +---------SVC4635------------------------------ +============================================== + +- %1 - CSAR UUID + +:: + + RESOURCE_FROM_CSAR_NOT_FOUND: { + code: 400, + message: "Error: resource from csar uuid %1 not found", + messageId: "SVC4635" + } + +---------SVC4636------------------------------ +============================================== + +- %1 - Data type name + +:: + + DATA_TYPE_CANNOT_BE_UPDATED_BAD_REQUEST: { + code: 400, + message: 'Error: Data type %1 cannot be upgraded. The new data type does not contain old properties or the type of one of the properties has been changed.', + messageId: "SVC4636" + } + +-----------SVC4637--------------------------- +============================================= + +- %1 - Attribute name + +:: + + ATTRIBUTE_NOT_FOUND: { + code: 404, + message: "Error: Requested '%1' attribute was not found.", + messageId: "SVC4637" + } + +-----------SVC4638--------------------------- +============================================= + +- %1 - Attribute name + +:: + + ATTRIBUTE_ALREADY_EXIST: { + code: 409, + message: "Error: Attribute with '%1' name already exists.", + messageId: "SVC4638" + } + +-----------SVC4639--------------------------- +============================================= + +- %1 - Property name + +:: + + PROPERTY_NAME_ALREADY_EXISTS: { + code: 409, + message: "Error: Property with '%1' name and different type already exists.", + messageId: "SVC4639" + } + +-----------SVC4640--------------------------- +============================================= + +- %1 - Property name + +:: + + INVALID_PROPERTY: { + code: 409, + message: "Error: Invalid property received.", + messageId: "SVC4640" + } + +---------SVC4641----------------------------- +============================================= + +- %1 - Invalid filter +- %2 - Valid filters + +:: + + INVALID_FILTER_KEY: { + code: 400, + message: "Error: The filter %1 is not applicable. Please use one of the following filters: %2", + messageId: "SVC4641" + } + +---------SVC4642----------------------------- +============================================= + +- %1 - Asset type +- %2 - Filter + +:: + + NO_ASSETS_FOUND: { + code: 404, + message: "No %1 were found to match criteria %2", + messageId: "SVC4642" + } + +---------SVC4643------------------------------ +============================================== + +- %1 - Resource"/"Product +- %2 - Sub-Category name +- %3 - Category name + +:: + + COMPONENT_SUB_CATEGORY_NOT_FOUND_FOR_CATEGORY: { + code: 404, + message: "Error: %1 sub-category '%2' not found under category '%3'.", + messageId: "SVC4643" + } + +---------SVC4644------------------------------ +============================================== + +- %1 - Format + +:: + + CORRUPTED_FORMAT: { + code: 400, + message: "Error: %1 format is corrupted.", + messageId: "SVC4644" + } + +---------SVC4645------------------------------ +============================================== + +- %1 - GroupType + +:: + + INVALID_VF_MODULE_TYPE: { + code: 400, + message: "Error: Invalid group type '%1' (should be VfModule).", + messageId: "SVC4645" + } + +---------SVC4646------------------------------ +============================================== + +- %1 - GroupName + +:: + + INVALID_VF_MODULE_NAME: { + code: 400, + message: "Error: Invalid Content. VF Module name '%1' contains invalid characters", + messageId: "SVC4646" + } + +---------SVC4647------------------------------ +============================================== + +- %1 - ModifiedName + +:: + + INVALID_VF_MODULE_NAME_MODIFICATION: { + code: 400, + message: "Error: Invalid VF Module name modification, can not modify '%1'", + messageId: "SVC4647" + } + +---------SVC4648------------------------------ +============================================== + +- %1 - InputId +- %2 - ComponentId + +:: + + INPUT_IS_NOT_CHILD_OF_COMPONENT: { + code: 400, + message: "Error: Input id: '%1' is not child of component id: '%2'", + messageId: "SVC4648" + } + +---------SVC4649------------------------------ +============================================== + +- %1 - GroupName + +:: + + GROUP_HAS_CYCLIC_DEPENDENCY: { + code: 400, + message: "Error: The group '%1' has cyclic dependency", + messageId: "SVC4649" + } + +---------SVC4650------------------------------ +============================================== + +- %1 - Component Type +- %2 - Service Name +- %3 - Error description + +:: + + AAI_ARTIFACT_GENERATION_FAILED: { + code: 500, + message: "Error: %1 %2 automatic generation of artifacts failed. Description: %3", + messageId: "SVC4650" + } + +---------SVC4651------------------------------ +============================================== + +:: + + PARENT_RESOURCE_DOES_NOT_EXTEND: { + code: 400, + message: "Error: Once resource is certified, derived_from can be changed only to a sibling", + messageId: "SVC4651" + } + +---------SVC4652------------------------------ +============================================== + +- %1 - Resource/Service + +:: + + COMPONENT_INVALID_SUBCATEGORY: { + code: 400, + message: "Error: Invalid Content. Invalid %1 sub category.", + messageId: "SVC4652" + } + +---------SVC4653------------------------------ +============================================== + +- %1 - Group instance uniqueId +- %2 - Service uniqueId + +:: + + GROUP_INSTANCE_NOT_FOUND_ON_COMPONENT_INSTANCE: { + code: 404, + message: "Error: Requested group instance %1 was not found on component %2.", + messageId: "SVC4653" + } + +---------SVC4654------------------------------ +============================================== + +- %1 - Group property name +- %2 - Valid min limit value +- %3 - Valid max limit value + +:: + + INVALID_GROUP_MIN_MAX_INSTANCES_PROPERTY_VALUE: { + code: 400, + message: "Error: Value of %1 must be not higher than %2, and not lower than %3.", + messageId: "SVC4654" + } + +---------SVC4655------------------------------ +============================================== + +- %1 - Group property name +- %2 - Valid min limit value +- %3 - Valid max limit value + +:: + + INVALID_GROUP_INITIAL_COUNT_PROPERTY_VALUE: { + code: 400, + message: "Error: Value of %1 must be between %2 and %3.", + messageId: "SVC4655" + } + +---------SVC4656------------------------------ +============================================== + +- %1 - Group property name +- %2 - Lower/Higher +- %3 - Valid max/min value + +:: + + INVALID_GROUP_PROPERTY_VALUE_LOWER_HIGHER: { + code: 400, + message: "Error: Value of %1 must be %2 or equals to %3.", + messageId: "SVC4656" + } + +---------SVC4657------------------------------ +============================================== + +- %1 - CertificationRequest/StartTesting + +:: + + RESOURCE_VFCMT_LIFECYCLE_STATE_NOT_VALID: { + code: 400, + message: "Error - Lifecycle state %1 is not valid for resource of type VFCMT", + messageId: "SVC4657" + } + +---------SVC4658------------------------------ +============================================== + +- %1 – Asset type [Service/Resource] +- %2 – Main asset uuid +- %3 – Not found asset type [Service/Resource] +- %4 – Not found asset name + +:: + + ASSET_NOT_FOUND_DURING_CSAR_CREATION: { + code: 400, + message: "Error: CSAR packaging failed for %1 %2. %3 %4 was not found", + messageId: "SVC4658" + } + +---------SVC4659------------------------------ +============================================== + +- %1 – asset type [Service/Resource] +- %2 – Main asset UUID +- %3 – Artifact name +- %4 – Artifact uuid + +:: + + ARTIFACT_PAYLOAD_NOT_FOUND_DURING_CSAR_CREATION: { + code: 400, + message: "Error: CSAR packaging failed for %1 %2. Artifact %3 [%4] was not found", + messageId: "SVC4659" + } + +---------SVC4660------------------------------ +============================================== + +- %1 - Asset type +- %2 - Matching generic node type name + +:: + + GENERIC_TYPE_NOT_FOUND: { + code: 404, + message: "Creation of %1 failed. Generic type %2 was not found", + messageId: "SVC4660" + } + +---------SVC4661------------------------------ +============================================== + +- %1 - Asset type +- %2 - Matching generic node type name + +:: + + TOSCA_SCHEMA_FILES_NOT_FOUND: { + code: 400, + message: "Error: CSAR packaging failed. TOSCA schema files for SDC-Version: %1 and Conformance-Level %2 were not found", + messageId: "SVC4661" + } + +---------SVC4662------------------------------ +============================================== + +- %1 - File name +- %2 - Parser error + +:: + + TOSCA_PARSE_ERROR: { + code: 400, + message: "Error: Invalid TOSCA template in file %1. %2", + messageId: "SVC4662" + } + +---------SVC4663------------------------------ +============================================== + +- %1 - Max length + +:: + + RESOURCE_VENDOR_MODEL_NUMBER_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Resource vendor model number exceeds limit of %1 characters.", + messageId: "SVC4663" + } + +---------SVC4664------------------------------ +============================================== + +:: + + INVALID_RESOURCE_VENDOR_MODEL_NUMBER: { + code: 400, + message: 'Error: Invalid Content. Resource vendor model number is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4664" + } + +---------SVC4665------------------------------ +============================================== + +- %1 - Max length + +:: + + SERVICE_TYPE_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Service type exceeds limit of %1 characters.", + messageId: "SVC4665" + } + +---------SVC4666------------------------------ +============================================== + +:: + + INVALID_SERVICE_TYPE: { + code: 400, + message: 'Error: Invalid Content. Serivce type is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4666" + } + +---------SVC4667------------------------------ +============================================== + +- %1 - Max length + +:: + + SERVICE_ROLE_EXCEEDS_LIMIT: { + code: 400, + message: "Error: Invalid Content. Service role exceeds limit of %1 characters.", + messageId: "SVC4667" + } + +---------SVC4668------------------------------ +============================================== + +:: + + INVALID_SERVICE_ROLE: { + code: 400, + message: 'Error: Invalid Content. Service role is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.', + messageId: "SVC4668" + } + +---------SVC4669----------------------------- +============================================= + +:: + + INVALID_RESOURCE_TYPE: { + code: 400, + message: "Error: Invalid resource type.", + messageId: "SVC4669" + } + +---------SVC4670------------------------------ +============================================== + +:: + + ARTIFACT_NAME_INVALID: { + code: 400, + message: "Error: Artifact name is invalid.", + messageId: "SVC4670" + } + +---------SVC4671------------------------------ +============================================== + +- %1 - VSP name +- %2 - VFC name + +:: + + CFVC_LOOP_DETECTED: { + code: 400, + message: 'Error: VSP %1 cannot be imported. The VSP contains internal loop in VFC %2', + messageId: "SVC4671" + }
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java index 8de222e688..d5cd56e058 100644 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/main/java/org/openecomp/core/utilities/file/FileContentHandler.java @@ -23,10 +23,13 @@ package org.openecomp.core.utilities.file; import org.apache.commons.collections4.MapUtils; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.Set; +import java.util.function.Function; public class FileContentHandler { @@ -45,12 +48,31 @@ public class FileContentHandler { return null; } - ByteArrayInputStream is = new ByteArrayInputStream(content); - return is; + return new ByteArrayInputStream(content); } - public void addFile(String fileName, byte[] contect) { - files.put(fileName, contect); + /** + * Applies a business logic to a file's content while taking care of all retrieval logic. + * + * @param fileName name of a file inside this content handler. + * @param processor the business logic to work on the file's input stream, which may not be set + * (check the {@link Optional} if no such file can be found + * @param <T> return type, may be {@link java.lang.Void} + * + * @return result produced by the processor + */ + public <T> T processFileContent(String fileName, Function<Optional<InputStream>, T> processor) { + + // do not throw IOException to mimic the existing uses of getFileContent() + try (InputStream contentInputStream = getFileContent(fileName)) { + return processor.apply(Optional.ofNullable(contentInputStream)); + } catch (IOException e) { + throw new ProcessingException("Failed to process file: " + fileName, e); + } + } + + public void addFile(String fileName, byte[] content) { + files.put(fileName, content); } public void addFile(String fileName, InputStream is) { @@ -94,4 +116,26 @@ public class FileContentHandler { public boolean containsFile(String fileName) { return files.containsKey(fileName); } + + /** + * An application-specific runtime exception + */ + private static class ProcessingException extends RuntimeException { + + public ProcessingException() { + super(); + } + + public ProcessingException(String message) { + super(message); + } + + public ProcessingException(Throwable cause) { + super(cause); + } + + public ProcessingException(String msg, Throwable cause) { + super(msg, cause); + } + } } diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/file/FileContentHandlerTest.java b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/file/FileContentHandlerTest.java new file mode 100644 index 0000000000..527ba22c1d --- /dev/null +++ b/openecomp-be/lib/openecomp-core-lib/openecomp-utilities-lib/src/test/java/org/openecomp/core/utilities/file/FileContentHandlerTest.java @@ -0,0 +1,53 @@ +package org.openecomp.core.utilities.file; + +import org.testng.annotations.Test; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Optional; + +import static org.testng.Assert.*; + +/** + * @author EVITALIY + * @since 24 Oct 17 + */ +public class FileContentHandlerTest { + + private static final String FILE_NAME = "test-file.txt"; + + @Test + public void testProcessFileContent() throws Exception { + + final int size = 13; + FileContentHandler contentHandler = new FileContentHandler(); + final byte[] content = new byte[size]; + Arrays.fill(content, (byte) 44); + contentHandler.addFile(FILE_NAME, content); + assertEquals(contentHandler.processFileContent(FILE_NAME, optional -> { + + try { + byte[] buffer = new byte[size]; + assertTrue(optional.isPresent()); + assertEquals(size, optional.get().read(buffer)); + return buffer; + } catch (IOException e) { + throw new RuntimeException("Unexpected error", e); + } + + }), content); + } + + @Test + public void testProcessEmptyFileContent() throws Exception { + FileContentHandler contentHandler = new FileContentHandler(); + contentHandler.addFile(FILE_NAME, new byte[0]); + assertFalse(contentHandler.processFileContent(FILE_NAME, Optional::isPresent)); + } + + @Test + public void testProcessNoFileContent() throws Exception { + FileContentHandler contentHandler = new FileContentHandler(); + assertFalse(contentHandler.processFileContent("filename", Optional::isPresent)); + } +}
\ No newline at end of file diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/EnvironmentTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/EnvironmentTest.java index fc01e2e8b0..6312e5a575 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/EnvironmentTest.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/EnvironmentTest.java @@ -23,16 +23,18 @@ package org.openecomp.sdc.heat.datatypes.model; import org.junit.Test; import org.openecomp.sdc.tosca.services.YamlUtil; +import java.io.IOException; import java.io.InputStream; public class EnvironmentTest { @Test - public void testYamlToServiceTemplateObj() { + public void testYamlToServiceTemplateObj() throws IOException { YamlUtil yamlUtil = new YamlUtil(); - InputStream yamlFile = yamlUtil.loadYamlFileIs("/mock/model/envSettings.env"); - Environment envVars = yamlUtil.yamlToObject(yamlFile, Environment.class); - envVars.toString(); + try (InputStream yamlFile = yamlUtil.loadYamlFileIs("/mock/model/envSettings.env")) { + Environment envVars = yamlUtil.yamlToObject(yamlFile, Environment.class); + envVars.toString(); + } } @Test @@ -46,9 +48,8 @@ public class EnvironmentTest { if (heatResourceName.length() == lastIndexOfUnderscore) { System.out.println(heatResourceName); } else { - String heatResourceNameSuffix = heatResourceName.substring(lastIndexOfUnderscore + 1); + try { - int heatResourceNameSuffixInt = Integer.parseInt(heatResourceNameSuffix); System.out.println(heatResourceName.substring(0, lastIndexOfUnderscore)); } catch (NumberFormatException ignored) { System.out.println(heatResourceName); diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplateTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplateTest.java index 3715b0f999..dd8abdc0b9 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplateTest.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/datatypes/model/HeatOrchestrationTemplateTest.java @@ -26,6 +26,7 @@ import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.services.YamlUtil; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; @@ -37,12 +38,13 @@ public class HeatOrchestrationTemplateTest { private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName()); @Test - public void testYamlToServiceTemplateObj() { + public void testYamlToServiceTemplateObj() throws IOException { YamlUtil yamlUtil = new YamlUtil(); - InputStream yamlFile = yamlUtil.loadYamlFileIs("/mock/model/testHeat.yml"); - HeatOrchestrationTemplate heatOrchestrationTemplate = - yamlUtil.yamlToObject(yamlFile, HeatOrchestrationTemplate.class); - heatOrchestrationTemplate.toString(); + try (InputStream yamlFile = yamlUtil.loadYamlFileIs("/mock/model/testHeat.yml")) { + HeatOrchestrationTemplate heatOrchestrationTemplate = + yamlUtil.yamlToObject(yamlFile, HeatOrchestrationTemplate.class); + heatOrchestrationTemplate.toString(); + } } @Test diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java index c7f4e3f6d1..e8c9c602f8 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java @@ -46,6 +46,7 @@ import org.openecomp.sdc.tosca.services.ToscaConstants; import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.tosca.services.YamlUtil; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; @@ -271,27 +272,29 @@ public class ToscaModelTest { @Test - public void testYamlToServiceTemplateObj() { - InputStream yamlFile = new YamlUtil().loadYamlFileIs("/mock/model/serviceTemplate.yaml"); - ServiceTemplate serviceTemplateFromYaml = - new YamlUtil().yamlToObject(yamlFile, ServiceTemplate.class); - Assert.assertNotNull(serviceTemplateFromYaml); + public void testYamlToServiceTemplateObj() throws IOException { + try (InputStream yamlFile = new YamlUtil().loadYamlFileIs("/mock/model/serviceTemplate.yaml")) { + ServiceTemplate serviceTemplateFromYaml = + new YamlUtil().yamlToObject(yamlFile, ServiceTemplate.class); + Assert.assertNotNull(serviceTemplateFromYaml); + } } @Test - public void testYamlToServiceTemplateIncludingHeatExtend() { + public void testYamlToServiceTemplateIncludingHeatExtend() throws IOException { ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - InputStream yamlFile = - toscaExtensionYamlUtil.loadYamlFileIs("/mock/model/serviceTemplateHeatExtend.yaml"); - ServiceTemplate serviceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - ParameterDefinitionExt parameterDefinitionExt = - (ParameterDefinitionExt) serviceTemplateFromYaml.getTopology_template().getInputs() - .get("inParam1"); - Assert.assertNotNull(parameterDefinitionExt.getLabel()); - String backToYamlString = toscaExtensionYamlUtil.objectToYaml(serviceTemplateFromYaml); - Assert.assertNotNull(backToYamlString); + try (InputStream yamlFile = + toscaExtensionYamlUtil.loadYamlFileIs("/mock/model/serviceTemplateHeatExtend.yaml")) { + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + ParameterDefinitionExt parameterDefinitionExt = + (ParameterDefinitionExt) serviceTemplateFromYaml.getTopology_template().getInputs() + .get("inParam1"); + Assert.assertNotNull(parameterDefinitionExt.getLabel()); + String backToYamlString = toscaExtensionYamlUtil.objectToYaml(serviceTemplateFromYaml); + Assert.assertNotNull(backToYamlString); + } } } diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java index 7ae91abfa5..aad21634a8 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java @@ -78,9 +78,9 @@ public class ToscaAnalyzerServiceImplTest { public ExpectedException thrown = ExpectedException.none(); @Mock - NodeTemplate nodeTemplateMock; + private NodeTemplate nodeTemplateMock; @Mock - ToscaServiceModel toscaServiceModelMock; + private ToscaServiceModel toscaServiceModelMock; @BeforeClass public static void onlyOnceSetUp() throws IOException { @@ -97,27 +97,29 @@ public class ToscaAnalyzerServiceImplTest { @Test public void testGetRequirements() throws Exception { ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - InputStream yamlFile = toscaExtensionYamlUtil - .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml"); - ServiceTemplate - serviceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - - NodeTemplate port_0 = - serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); - List<RequirementAssignment> reqList = - toscaAnalyzerService.getRequirements(port_0, ToscaConstants.BINDING_REQUIREMENT_ID); - assertEquals(1, reqList.size()); - - reqList.clear(); - NodeTemplate port_1 = - serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui1_port_1"); - reqList = toscaAnalyzerService.getRequirements(port_1, ToscaConstants.LINK_REQUIREMENT_ID); - assertEquals(2, reqList.size()); - - reqList.clear(); - reqList = toscaAnalyzerService.getRequirements(port_0, ToscaConstants.LINK_REQUIREMENT_ID); - assertEquals(0, reqList.size()); + try (InputStream yamlFile = toscaExtensionYamlUtil + .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml")) { + + ServiceTemplate + serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + + NodeTemplate port_0 = + serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui_port_0"); + List<RequirementAssignment> reqList = + toscaAnalyzerService.getRequirements(port_0, ToscaConstants.BINDING_REQUIREMENT_ID); + assertEquals(1, reqList.size()); + + reqList.clear(); + NodeTemplate port_1 = + serviceTemplateFromYaml.getTopology_template().getNode_templates().get("cmaui1_port_1"); + reqList = toscaAnalyzerService.getRequirements(port_1, ToscaConstants.LINK_REQUIREMENT_ID); + assertEquals(2, reqList.size()); + + reqList.clear(); + reqList = toscaAnalyzerService.getRequirements(port_0, ToscaConstants.LINK_REQUIREMENT_ID); + assertEquals(0, reqList.size()); + } } @Test @@ -171,44 +173,45 @@ public class ToscaAnalyzerServiceImplTest { .getSubstituteServiceTemplateName("invalid1", invalidSubstitutableNodeTemplate1); assertEquals(false, substituteServiceTemplateName.isPresent()); - if (substitutableNodeTemplate.isPresent()) { - NodeTemplate invalidSubstitutableNodeTemplate2 = substitutableNodeTemplate.get(); - Object serviceTemplateFilter = invalidSubstitutableNodeTemplate2.getProperties() - .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); + substitutableNodeTemplate.ifPresent(nodeTemplate -> { + Object serviceTemplateFilter = nodeTemplate.getProperties() + .get(ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME); ((Map) serviceTemplateFilter).clear(); toscaAnalyzerService - .getSubstituteServiceTemplateName("invalid2", invalidSubstitutableNodeTemplate2); + .getSubstituteServiceTemplateName("invalid2", nodeTemplate); - } + }); } @Test public void testGetSubstitutableNodeTemplates() throws Exception { ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - InputStream yamlFile = toscaExtensionYamlUtil - .loadYamlFileIs("/mock/analyzerService/ServiceTemplateSubstituteTest.yaml"); - ServiceTemplate serviceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - - Map<String, NodeTemplate> substitutableNodeTemplates = - toscaAnalyzerService.getSubstitutableNodeTemplates(serviceTemplateFromYaml); - assertEquals(2, substitutableNodeTemplates.size()); - assertNotNull(substitutableNodeTemplates.get("test_nested1")); - assertNotNull(substitutableNodeTemplates.get("test_nested2")); + try (InputStream yamlFile = toscaExtensionYamlUtil + .loadYamlFileIs("/mock/analyzerService/ServiceTemplateSubstituteTest.yaml")) { + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + + Map<String, NodeTemplate> substitutableNodeTemplates = + toscaAnalyzerService.getSubstitutableNodeTemplates(serviceTemplateFromYaml); + assertEquals(2, substitutableNodeTemplates.size()); + assertNotNull(substitutableNodeTemplates.get("test_nested1")); + assertNotNull(substitutableNodeTemplates.get("test_nested2")); + + ServiceTemplate emptyServiceTemplate = new ServiceTemplate(); + emptyServiceTemplate.setTopology_template(new TopologyTemplate()); + substitutableNodeTemplates = + toscaAnalyzerService.getSubstitutableNodeTemplates(emptyServiceTemplate); + assertEquals(0, substitutableNodeTemplates.size()); + } - ServiceTemplate emptyServiceTemplate = new ServiceTemplate(); - emptyServiceTemplate.setTopology_template(new TopologyTemplate()); - substitutableNodeTemplates = - toscaAnalyzerService.getSubstitutableNodeTemplates(emptyServiceTemplate); - assertEquals(0, substitutableNodeTemplates.size()); - - yamlFile = toscaExtensionYamlUtil - .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml"); - serviceTemplateFromYaml = toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - substitutableNodeTemplates = - toscaAnalyzerService.getSubstitutableNodeTemplates(serviceTemplateFromYaml); - assertEquals(0, substitutableNodeTemplates.size()); + try (InputStream yamlFile = toscaExtensionYamlUtil + .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml")) { + ServiceTemplate serviceTemplateFromYaml = toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + Map<String, NodeTemplate> substitutableNodeTemplates = + toscaAnalyzerService.getSubstitutableNodeTemplates(serviceTemplateFromYaml); + assertEquals(0, substitutableNodeTemplates.size()); + } } @Test @@ -217,35 +220,36 @@ public class ToscaAnalyzerServiceImplTest { thrown.expectMessage( "Invalid Tosca model data, missing 'Node Template' entry for 'Node Template' id cmaui_port_9"); ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - InputStream yamlFile = toscaExtensionYamlUtil - .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml"); - ServiceTemplate nestedServiceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - - Optional<Map.Entry<String, NodeTemplate>> mappedNodeTemplate = toscaAnalyzerService - .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", - nestedServiceTemplateFromYaml, "local_storage_server_cmaui"); - assertEquals(true, mappedNodeTemplate.isPresent()); - if (mappedNodeTemplate.isPresent()) { - assertEquals("server_cmaui", mappedNodeTemplate.get().getKey()); - assertNotNull(mappedNodeTemplate.get().getValue()); + try (InputStream yamlFile = toscaExtensionYamlUtil + .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml")) { + ServiceTemplate nestedServiceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + + Optional<Map.Entry<String, NodeTemplate>> mappedNodeTemplate = toscaAnalyzerService + .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", + nestedServiceTemplateFromYaml, "local_storage_server_cmaui"); + assertEquals(true, mappedNodeTemplate.isPresent()); + mappedNodeTemplate.ifPresent(stringNodeTemplateEntry -> { + assertEquals("server_cmaui", stringNodeTemplateEntry.getKey()); + assertNotNull(stringNodeTemplateEntry.getValue()); + }); + + mappedNodeTemplate = toscaAnalyzerService + .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", + nestedServiceTemplateFromYaml, "link_cmaui_port_invalid"); + assertEquals(true, mappedNodeTemplate.isPresent()); + mappedNodeTemplate.ifPresent(stringNodeTemplateEntry -> { + assertEquals("server_cmaui", stringNodeTemplateEntry.getKey()); + assertNotNull(stringNodeTemplateEntry.getValue()); + }); + + ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates() + .get(toscaServiceModel.getEntryDefinitionServiceTemplate()); + mappedNodeTemplate = toscaAnalyzerService.getSubstitutionMappedNodeTemplateByExposedReq( + toscaServiceModel.getEntryDefinitionServiceTemplate(), mainServiceTemplate, + "local_storage_server_cmaui"); + assertEquals(false, mappedNodeTemplate.isPresent()); } - - mappedNodeTemplate = toscaAnalyzerService - .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", - nestedServiceTemplateFromYaml, "link_cmaui_port_invalid"); - assertEquals(true, mappedNodeTemplate.isPresent()); - if (mappedNodeTemplate.isPresent()) { - assertEquals("server_cmaui", mappedNodeTemplate.get().getKey()); - assertNotNull(mappedNodeTemplate.get().getValue()); - } - - ServiceTemplate mainServiceTemplate = toscaServiceModel.getServiceTemplates() - .get(toscaServiceModel.getEntryDefinitionServiceTemplate()); - mappedNodeTemplate = toscaAnalyzerService.getSubstitutionMappedNodeTemplateByExposedReq( - toscaServiceModel.getEntryDefinitionServiceTemplate(), mainServiceTemplate, - "local_storage_server_cmaui"); - assertEquals(false, mappedNodeTemplate.isPresent()); } @Test @@ -283,14 +287,15 @@ public class ToscaAnalyzerServiceImplTest { thrown.expectMessage( "Invalid Tosca model data, missing 'Node Template' entry for 'Node Template' id cmaui_port_9"); ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - InputStream yamlFile = toscaExtensionYamlUtil - .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml"); - ServiceTemplate nestedServiceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + try (InputStream yamlFile = toscaExtensionYamlUtil + .loadYamlFileIs("/mock/analyzerService/NestedServiceTemplateReqTest.yaml")) { + ServiceTemplate nestedServiceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - toscaAnalyzerService - .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", - nestedServiceTemplateFromYaml, "link_cmaui_port_invalid"); + toscaAnalyzerService + .getSubstitutionMappedNodeTemplateByExposedReq("NestedServiceTemplateSubstituteTest.yaml", + nestedServiceTemplateFromYaml, "link_cmaui_port_invalid"); + } } @Test diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaFileOutputServiceCsarImplTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaFileOutputServiceCsarImplTest.java index 4d025e1540..66dda12b4b 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaFileOutputServiceCsarImplTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaFileOutputServiceCsarImplTest.java @@ -41,7 +41,7 @@ import java.util.zip.ZipFile; public class ToscaFileOutputServiceCsarImplTest { - private ToscaFileOutputServiceCsarImpl toscaFileOutputServiceCSARImpl = + private final ToscaFileOutputServiceCsarImpl toscaFileOutputServiceCSARImpl = new ToscaFileOutputServiceCsarImpl(); @Test @@ -112,21 +112,22 @@ public class ToscaFileOutputServiceCsarImplTest { String resultFileName = "resultFile.zip"; File file = new File(resultFileName); - FileOutputStream fos = new FileOutputStream(file); - fos.write(csarFile); - fos.close(); + try (FileOutputStream fos = new FileOutputStream(file)) { + fos.write(csarFile); + } - ZipFile zipFile = new ZipFile(resultFileName); + try (ZipFile zipFile = new ZipFile(resultFileName)) { - Enumeration<? extends ZipEntry> entries = zipFile.entries(); + Enumeration<? extends ZipEntry> entries = zipFile.entries(); - int count = 0; - while (entries.hasMoreElements()) { - count++; - entries.nextElement(); + int count = 0; + while (entries.hasMoreElements()) { + count++; + entries.nextElement(); + } + Assert.assertEquals(7, count); } - Assert.assertEquals(7, count); - zipFile.close(); + Files.delete(Paths.get(file.getPath())); } @@ -150,21 +151,22 @@ public class ToscaFileOutputServiceCsarImplTest { String resultFileName = "resultFile.zip"; File file = new File(resultFileName); - FileOutputStream fos = new FileOutputStream(file); - fos.write(csarFile); - fos.close(); + try (FileOutputStream fos = new FileOutputStream(file)) { + fos.write(csarFile); + } - ZipFile zipFile = new ZipFile(resultFileName); + try (ZipFile zipFile = new ZipFile(resultFileName)) { - Enumeration<? extends ZipEntry> entries = zipFile.entries(); + Enumeration<? extends ZipEntry> entries = zipFile.entries(); - int count = 0; - while (entries.hasMoreElements()) { - count++; - entries.nextElement(); + int count = 0; + while (entries.hasMoreElements()) { + count++; + entries.nextElement(); + } + Assert.assertEquals(2, count); } - Assert.assertEquals(2, count); - zipFile.close(); + Files.delete(Paths.get(file.getPath())); } } |