aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authormark.j.leonard <mark.j.leonard@gmail.com>2019-04-01 19:07:53 +0100
committermark.j.leonard <mark.j.leonard@gmail.com>2019-04-01 19:07:53 +0100
commit6342b6f7e46266caf72cbee7c96f782cc5093d80 (patch)
tree40bdfcf9eea94886e52d98e191ea2f1f75684f8b /src/main/java
parent60457e41054465e9fa10c8e6bfdbfa62a45d1f0a (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.java20
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())) //