From 93f9fec9586702a15d6a562ead3d0d432a12b487 Mon Sep 17 00:00:00 2001 From: "mark.j.leonard" Date: Tue, 7 Aug 2018 18:33:38 +0100 Subject: [PATCH] Add VF Module Groups to the SD-WAN Service test Create additional TOSCA YAML content for the existing SD-WAN Service CSAR input file, so that the VF Module processing code is invoked. Issue-ID: AAI-1250 Change-Id: I24a842223154d52e1a4a19e5b9cd739b0ceee4f4 Signed-off-by: mark.j.leonard --- .../babel/csar/extractor/YamlExtractorTest.java | 13 ++- .../service-SdWanServiceTest-csar.csar | Bin 16003 -> 18148 bytes .../AAI-SD-WAN-Service-Test-service-1.0.xml | 41 +++++++- src/test/resources/ymlFiles/groups.yml | 104 +++++++++++++++++++++ .../ymlFiles/resource-Allotedresource-template.yml | 62 ++++++++++++ 5 files changed, 216 insertions(+), 4 deletions(-) create mode 100644 src/test/resources/ymlFiles/groups.yml create mode 100644 src/test/resources/ymlFiles/resource-Allotedresource-template.yml diff --git a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java index f783e7c..faeb536 100644 --- a/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java +++ b/src/test/java/org/onap/aai/babel/csar/extractor/YamlExtractorTest.java @@ -113,13 +113,17 @@ public class YamlExtractorTest { payloads.add("ymlFiles/resource-SdWanTestVsp-template.yml"); payloads.add("ymlFiles/resource-TunnelXconntest-template.yml"); payloads.add("ymlFiles/service-SdWanServiceTest-template.yml"); + payloads.add("ymlFiles/resource-Allotedresource-template.yml"); payloads.add("ymlFiles/artifacts.yml"); payloads.add("ymlFiles/data.yml"); + payloads.add("ymlFiles/groups.yml"); new ArtifactTestUtils().performYmlAsserts(ymlFiles, payloads); } /** + * Call the extractor with the specified arguments and assert that an exception is thrown. + * * @param archive * @param name * @param version @@ -136,12 +140,17 @@ public class YamlExtractorTest { } /** + * Extract Artifacts from the specified CSAR resource. + * * @param resourceName - * @return + * the CSAR file + * @return the extracted artifacts * @throws InvalidArchiveException * @throws IOException + * for I/O errors */ private List extractArchive(String resourceName) throws InvalidArchiveException, IOException { - return new YamlExtractor().extract(new ArtifactTestUtils().getCompressedArtifact(resourceName), resourceName, "v1"); + byte[] csar = new ArtifactTestUtils().getCompressedArtifact(resourceName); + return new YamlExtractor().extract(csar, resourceName, "v1"); } } diff --git a/src/test/resources/compressedArtifacts/service-SdWanServiceTest-csar.csar b/src/test/resources/compressedArtifacts/service-SdWanServiceTest-csar.csar index 9d6132a0bd3577d636530123af824e26683dc64c..bbace0bd227a7d4e1f8ca682b3e3b191614bd0e6 100644 GIT binary patch delta 15629 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 diff --git a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml index 8ca25c3..fab91fd 100644 --- a/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml +++ b/src/test/resources/generatedXml/AAI-SD-WAN-Service-Test-service-1.0.xml @@ -11,7 +11,44 @@ T unbounded - + + + T + unbounded + + + + model-ver + + model-ver.model-version-id + 2a111111-1111-1111-1111-111111111111 + + + model.model-invariant-id + 1a111111-1111-1111-1111-111111111111 + + + + + + T + unbounded + + + + model-ver + + model-ver.model-version-id + 2b111111-1111-1111-1111-111111111111 + + + model.model-invariant-id + 1b111111-1111-1111-1111-111111111111 + + + + + model-ver @@ -29,4 +66,4 @@ - + \ No newline at end of file diff --git a/src/test/resources/ymlFiles/groups.yml b/src/test/resources/ymlFiles/groups.yml new file mode 100644 index 0000000..0fea540 --- /dev/null +++ b/src/test/resources/ymlFiles/groups.yml @@ -0,0 +1,104 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +tosca_definitions_version: tosca_simple_yaml_1_0 + +#metadata: +# filename: tosca/groups.yml +# version: '1.0' + +imports: +- data.yml + +group_types: + tosca.groups.Root: + description: This is the default (root) TOSCA Group Type definition that all other TOSCA base Group Types derive from. + interfaces: + standard: + type: tosca.interfaces.node.lifecycle.Standard + org.openecomp.groups.VfModule: + derived_from: tosca.groups.Root + description: Grouped all heat resources which are in the same VF Module + properties: + isBase: + description: Whether this module should be deployed before other modules + type: boolean + status: supported + default: false + required: true + vf_module_label: + description: | + Alternate textual key used to reference this VF-Module model. Must be unique within the VNF model + type: string + required: true + vf_module_description: + description: | + Description of the VF-modules contents and purpose (e.g. "Front-End" or "Database Cluster") + type: string + required: true + min_vf_module_instances: + description: The minimum instances of this VF-Module + type: integer + required: true + max_vf_module_instances: + description: The maximum instances of this VF-Module + type: integer + required: false + initial_count: + description: | + The initial count of instances of the VF-Module. The value must be in the range between min_vfmodule_instances and max_vfmodule_instances. If no value provided the initial count is the min_vfmodule_instances. + type: integer + required: false + vf_module_type: + type: string + required: true + constraints: + - valid_values: + - Base + - Expansion + volume_group: + description: | + "true" indicates that this VF Module model requires attachment to a Volume Group. VID operator must select the Volume Group instance to attach to a VF-Module at deployment time. + type: boolean + default: false + required: true + availability_zone_count: + type: integer + required: false + description: > + Quantity of Availability Zones needed for this VF-Module + (source: Extracted from VF-Module HEAT template) + vfc_list: + type: map + entry_schema: + description: : + type: string + required: false + description: > + Identifies the set of VM types and their count included in the VF-Module + + org.openecomp.groups.heat.HeatStack: + derived_from: org.openecomp.groups.VfModule + description: Grouped all heat resources which are in the same heat stack + properties: + heat_file: + description: Heat file which associate to this group/heat stack + type: string + status: supported + required: true + description: + description: group description + type: string + status: supported + required: true diff --git a/src/test/resources/ymlFiles/resource-Allotedresource-template.yml b/src/test/resources/ymlFiles/resource-Allotedresource-template.yml new file mode 100644 index 0000000..cd405e8 --- /dev/null +++ b/src/test/resources/ymlFiles/resource-Allotedresource-template.yml @@ -0,0 +1,62 @@ +tosca_definitions_version: tosca_simple_yaml_1_0 +metadata: + invariantUUID: cf3ccc9c-b6ea-468e-8eef-f45479978fc1 + UUID: 76ba485f-50a3-480d-895e-5c319191bc11 + name: Allotedresource + description: Allotedresource + type: VFC + category: Allotted Resource + subcategory: Allotted Resource + resourceVendor: '123' + resourceVendorRelease: '123' +imports: +- nodes: + file: nodes.yml +- datatypes: + file: data.yml +- capabilities: + file: capabilities.yml +- relationships: + file: relationships.yml +- groups: + file: groups.yml +- policies: + file: policies.yml +node_types: + org.openecomp.resource.vfc.AllottedResource1235: + derived_from: tosca.nodes.Root + description: Allotedresource + properties: + target_network_role: + type: string + description: Target network role + providing_service_invariant_uuid: + type: string + description: The depending service invariant uuid in order to map the allotted resource to the specific service version + role: + type: string + description: Unique label that defines the role that this allotted resource performs + providing_service_uuid: + type: string + description: The depending service uuid in order to map the allotted resource to the specific service version + ecomp_naming: + type: org.openecomp.datatypes.EcompNaming + providing_service_name: + type: string + description: The depending service name in order to map the allotted resource to the specific service version + max_instances: + type: integer + default: 1 + min_instances: + type: integer + default: 1 + ecomp_homing: + type: org.openecomp.datatypes.EcompHoming + requirements: + - service_dependency: + occurrences: + - 1 + - 1 + capability: org.openecomp.capabilities.AllottedResource + node: tosca.services.Root + relationship: tosca.relationships.DependsOn -- 2.16.6