aboutsummaryrefslogtreecommitdiffstats
path: root/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
diff options
context:
space:
mode:
Diffstat (limited to 'vnfsdk_pkgtools/vnfreq/pkg_reqs.py')
-rw-r--r--vnfsdk_pkgtools/vnfreq/pkg_reqs.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/vnfsdk_pkgtools/vnfreq/pkg_reqs.py b/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
index 6153fa4..2592017 100644
--- a/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
+++ b/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
@@ -20,6 +20,7 @@ import six
from stevedore import driver
from vnfsdk_pkgtools.packager import csar
+from vnfsdk_pkgtools.validator import toscaparser_validator as tv
from vnfsdk_pkgtools import vnfreq
@@ -68,3 +69,29 @@ class R04298(vnfreq.TesterBase):
raise vnfreq.VnfRequirementError("No testing scripts found")
return 0
+
+class R26881(vnfreq.TesterBase):
+ ID = "R-26881"
+ DESC = ("The VNF provider MUST provide the binaries and images needed "
+ "to instantiate the VNF (VNF and VNFC images).")
+
+ def _do_check(self, reader, tosca):
+ entry_path = os.path.dirname(os.path.join(reader.destination,
+ reader.entry_definitions))
+ valid_artifacts = []
+ for node in getattr(tosca.tosca, 'nodetemplates', []):
+ if tosca.is_type(node, 'tosca.nodes.nfv.Vdu.Compute') or \
+ tosca.is_type(node, 'tosca.nodes.nfv.Vdu.VirtualStorage'):
+ # TODO(llu) nfv-toscaparser now doesn't support artifacts
+ # yet, we have to hack it for now.
+ # See https://jira.opnfv.org/browse/PARSER-184.
+ for name, props in node.entity_tpl.get('artifacts', {}).iteritems():
+ file = props.get('file', None)
+ if file and \
+ os.path.isfile(os.path.join(entry_path, file)) or \
+ os.path.isfile(os.path.join(reader.destination, file)):
+ valid_artifacts.append(file)
+ if not valid_artifacts:
+ raise vnfreq.VnfRequirementError("No valid binaries or images for VNF instantion found")
+ return 0
+