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.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/vnfsdk_pkgtools/vnfreq/pkg_reqs.py b/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
index c5b20f7..5bc5c6b 100644
--- a/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
+++ b/vnfsdk_pkgtools/vnfreq/pkg_reqs.py
@@ -14,10 +14,12 @@
#
import abc
+import os
import six
from stevedore import driver
+from vnfsdk_pkgtools.packager import csar
from vnfsdk_pkgtools import vnfreq
@@ -35,3 +37,19 @@ class R66070(vnfreq.TesterBase):
# Existing reader.manifest already means a valid manifest file
# no futher check needed.
return 0
+
+
+class R77707(vnfreq.TesterBase):
+ ID = "R-77707"
+ DESC = ("The VNF provider MUST include a Manifest File that contains "
+ "a list of all the components in the VNF package.")
+
+ def _do_check(self, reader, tosca):
+ for root, dirs, files in os.walk(reader.destination):
+ for file in files:
+ full_path = os.path.join(root, file)
+ rel_path = os.path.relpath(full_path, reader.destination)
+ if rel_path not in (reader.entry_manifest_file, csar.META_FILE):
+ if rel_path not in reader.manifest.digests:
+ raise vnfreq.VnfRequirementError("Package component %s not found in manifest file" % rel_path)
+ return 0