diff options
author | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-04-01 19:07:53 +0100 |
---|---|---|
committer | mark.j.leonard <mark.j.leonard@gmail.com> | 2019-04-01 19:07:53 +0100 |
commit | 6342b6f7e46266caf72cbee7c96f782cc5093d80 (patch) | |
tree | 40bdfcf9eea94886e52d98e191ea2f1f75684f8b /src/main/java | |
parent | 60457e41054465e9fa10c8e6bfdbfa62a45d1f0a (diff) |
Exception handling for image software versions
Throw an exception when no software versions are present for a VNF
image. This needs to be an unchecked exception when using Streams.
Change-Id: If7a429c79a614eed1dad6ed8ac1993caca47ab6d
Issue-ID: AAI-2306
Signed-off-by: mark.j.leonard <mark.j.leonard@gmail.com>
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java index 5f3d15b..d5ba793 100644 --- a/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java +++ b/src/main/java/org/onap/aai/babel/csar/vnfcatalog/VnfVendorImageExtractor.java @@ -187,11 +187,14 @@ public class VnfVendorImageExtractor { * the path to the CSAR file * @return a List of Vendor Image Configurations * @throws SdcToscaParserException + * if the SDC TOSCA parser determines that the CSAR is invalid * @throws ToscaToCatalogException + * if there are no software versions defined for an image * @throws InvalidNumberOfNodesException + * if multiple VNF configuration nodes are found in the CSAR */ private List<VendorImageConfiguration> createVendorImageConfigurations(String csarFilepath) - throws SdcToscaParserException, InvalidNumberOfNodesException { + throws SdcToscaParserException, ToscaToCatalogException, InvalidNumberOfNodesException { ISdcCsarHelper csarHelper = SdcToscaParserFactory.getInstance().getSdcCsarHelper(csarFilepath); List<NodeTemplate> serviceVfList = ToscaParser.getServiceNodeTemplates(csarHelper) @@ -215,7 +218,11 @@ public class VnfVendorImageExtractor { + vnfConfigs.size() + " nodes were found in the CSAR."); } - return createVendorImageConfigurations(serviceVfList, vnfConfigurationNode); + try { + return createVendorImageConfigurations(serviceVfList, vnfConfigurationNode); + } catch (IllegalArgumentException e) { + throw new ToscaToCatalogException(e.getMessage()); + } } return Collections.emptyList(); @@ -263,8 +270,11 @@ public class VnfVendorImageExtractor { * the node template for the VF * * @return a stream of VendorImageConfiguration objects + * @throws IllegalArgumentException + * if the VF has no child node templates which contain images (complex properties) that have software + * version strings */ - private Stream<VendorImageConfiguration> buildVendorImageConfigurations( + Stream<VendorImageConfiguration> buildVendorImageConfigurations( Collection<Map<String, Map<String, String>>> flavorMaps, NodeTemplate vfNodeTemplate) { String resourceVendor = vfNodeTemplate.getMetaData().getValue("resourceVendor"); applicationLogger.debug("Resource Vendor " + resourceVendor); @@ -273,6 +283,10 @@ public class VnfVendorImageExtractor { extractSoftwareVersions(vfNodeTemplate.getSubMappingToscaTemplate().getNodeTemplates()); applicationLogger.debug("Software Versions: " + softwareVersions); + if (softwareVersions.isEmpty()) { + throw new IllegalArgumentException("No software versions could be found for this CSAR file"); + } + return flavorMaps.stream() // .map(value -> value.entrySet().stream() // .filter(entry -> VENDOR_INFO.equals(entry.getKey())) // |