aboutsummaryrefslogtreecommitdiffstats
path: root/vnfsdk_pkgtools/packager/manifest.py
diff options
context:
space:
mode:
Diffstat (limited to 'vnfsdk_pkgtools/packager/manifest.py')
-rw-r--r--vnfsdk_pkgtools/packager/manifest.py36
1 files changed, 19 insertions, 17 deletions
diff --git a/vnfsdk_pkgtools/packager/manifest.py b/vnfsdk_pkgtools/packager/manifest.py
index a518f31..b6d01f6 100644
--- a/vnfsdk_pkgtools/packager/manifest.py
+++ b/vnfsdk_pkgtools/packager/manifest.py
@@ -22,18 +22,20 @@ import udatetime
from vnfsdk_pkgtools.packager import utils
-METADATA_KEYS = [ 'vnf_provider_id',
- 'vnf_product_name',
- 'vnf_release_date_time',
- 'vnf_package_version']
-DIGEST_KEYS = [ 'Source', 'Algorithm', 'Hash' ]
+METADATA_KEYS = ['vnf_provider_id',
+ 'vnf_product_name',
+ 'vnf_release_date_time',
+ 'vnf_package_version']
+DIGEST_KEYS = ['Source', 'Algorithm', 'Hash']
SUPPORTED_HASH_ALGO = ['SHA-256', 'SHA-512']
NON_MANO_ARTIFACT_RE = re.compile(r'^[0-9a-z_-]+(\.[0-9a-z_-]+)*:$')
+
class ManifestException(Exception):
pass
+
class Manifest(object):
' Manifest file in CSAR package'
def __init__(self, root_path, manifest_path, sol241=False):
@@ -49,17 +51,17 @@ class Manifest(object):
# non_mano_artifact dict
# :key = set identifier
# :value = list of files
- self.sol241=sol241
+ self.sol241 = sol241
self.non_mano_artifacts = {}
- self.blocks = [ ]
+ self.blocks = []
self._split_blocks()
self._parse_all_blocks()
@staticmethod
def __split_line(s):
- remain=s
+ remain = s
try:
- (key, value)=s.split(':', 1)
+ (key, value) = s.split(':', 1)
value = value.strip()
remain = None
except ValueError:
@@ -72,7 +74,7 @@ class Manifest(object):
Split manifest file into blocks, each block is seperated by a empty
line or a line with only spaces and tabs.
'''
- block_content = [ ]
+ block_content = []
with open(os.path.join(self.root, self.path), 'rU') as fp:
for line in fp:
line = line.strip(' \t\n')
@@ -106,11 +108,11 @@ class Manifest(object):
if key in METADATA_KEYS:
self.metadata[key] = value
elif key == 'vnf_release_data_time':
- #sol004 v2.4.1 compatibility
+ # sol004 v2.4.1 compatibility
self.metadata['vnf_release_date_time'] = value
else:
raise ManifestException("Unrecognized metadata %s:" % line)
- #validate metadata keys
+ # validate metadata keys
missing_keys = set(METADATA_KEYS) - set(self.metadata.keys())
if missing_keys:
raise ManifestException("Missing metadata keys: %s" % ','.join(missing_keys))
@@ -119,7 +121,7 @@ class Manifest(object):
udatetime.from_string(self.metadata['vnf_release_date_time'])
except ValueError:
raise ManifestException("Incorrect IETF RFC 3339 vnf_release_date_time: %s"
- % self.metadata['vnf_release_date_time'])
+ % self.metadata['vnf_release_date_time'])
def parse_cms(self, lines):
if '--END CMS--' not in lines[-1]:
@@ -138,12 +140,12 @@ class Manifest(object):
if key == 'Source':
self.digests[value] = (None, None)
elif key == 'Algorithm':
- #validate algorithm
+ # validate algorithm
desc['Algorithm'] = desc['Algorithm'].upper()
if desc['Algorithm'] not in SUPPORTED_HASH_ALGO:
raise ManifestException("Unsupported hash algorithm: %s" % desc['Algorithm'])
- #validate hash
+ # validate hash
if desc.get('Algorithm') and desc.get('Hash') and desc.get('Source'):
hash = utils.cal_file_hash(self.root, desc['Source'], desc['Algorithm'])
if hash != desc['Hash']:
@@ -213,7 +215,7 @@ class Manifest(object):
# empty line between digest and signature section
ret += "\n"
# signature
- if self.signature:
+ if self.signature:
ret += self.signature
return ret
@@ -242,7 +244,7 @@ class Manifest(object):
elif not skip:
lines.append(line)
content = ''.join(lines)
- tmpfile = tempfile.NamedTemporaryFile(mode='w',delete=False)
+ tmpfile = tempfile.NamedTemporaryFile(mode='w', delete=False)
tmpfile.write(content)
tmpfile.close()
return tmpfile.name