-_METADATA_FILE_PATH = 'TOSCA-Metadata/TOSCA.meta'
-_METADATA_DESCRIPTOR_FIELD = 'Entry-Definitions'
-_METADATA_MANIFEST_FIELD = 'ETSI-Entry-Manifest'
-_METADATA_CHANGELOG_FIELD = 'ETSI-Entry-Change-Log'
-_METADATA_LICENSES_FIELD = 'ETSI-Entry-Licenses'
-_METADATA_DEFAULT_CHANGELOG_PATH = 'ChangeLog.txt'
-_METADATA_DEFAULT_LICENSES_PATH = 'Licenses'
-_MANIFEST_FILE_PATH_FIELD = 'Source'
-_MANIFEST_FILE_HASH_ALGORITHM_FIELD = 'Algorithm'
-_MANIFEST_FILE_HASH_DIGEST_FIELD = 'Hash'
+_METADATA_FILE_PATH = "TOSCA-Metadata/TOSCA.meta"
+_METADATA_DESCRIPTOR_FIELD = "Entry-Definitions"
+_METADATA_MANIFEST_FIELD = "ETSI-Entry-Manifest"
+_METADATA_CHANGELOG_FIELD = "ETSI-Entry-Change-Log"
+_METADATA_LICENSES_FIELD = "ETSI-Entry-Licenses"
+_METADATA_DEFAULT_CHANGELOG_PATH = "ChangeLog.txt"
+_METADATA_DEFAULT_LICENSES_PATH = "Licenses"
+_MANIFEST_FILE_PATH_FIELD = "Source"
+_MANIFEST_FILE_HASH_ALGORITHM_FIELD = "Algorithm"
+_MANIFEST_FILE_HASH_DIGEST_FIELD = "Hash"
self._package_path = package_path
self._package_metadata = self._parse_package_metadata()
self._manifest_data = self._parse_manifest_data()
self._package_path = package_path
self._package_metadata = self._parse_package_metadata()
self._manifest_data = self._parse_manifest_data()
except FileNotFoundError as e:
raise e
except (Exception, OSError) as e:
except FileNotFoundError as e:
raise e
except (Exception, OSError) as e:
def _parse_package_metadata_without_metadata_dir(self):
package_root_files = {f for f in os.listdir(self._package_path)}
def _parse_package_metadata_without_metadata_dir(self):
package_root_files = {f for f in os.listdir(self._package_path)}
raise SOL004PackageException(error_msg.format(len(package_root_yamls)))
# TODO: Parse extra metadata from descriptor YAML?
raise SOL004PackageException(error_msg.format(len(package_root_yamls)))
# TODO: Parse extra metadata from descriptor YAML?
- return [{
- _METADATA_DESCRIPTOR_FIELD: package_root_yamls[0],
- _METADATA_MANIFEST_FIELD: '{}.mf'.format(os.path.splitext(package_root_yamls[0])[0]),
- _METADATA_CHANGELOG_FIELD: _METADATA_DEFAULT_CHANGELOG_PATH,
- _METADATA_LICENSES_FIELD: _METADATA_DEFAULT_LICENSES_PATH
- }]
+ return [
+ {
+ _METADATA_DESCRIPTOR_FIELD: package_root_yamls[0],
+ _METADATA_MANIFEST_FIELD: "{}.mf".format(
+ os.path.splitext(package_root_yamls[0])[0]
+ ),
+ _METADATA_CHANGELOG_FIELD: _METADATA_DEFAULT_CHANGELOG_PATH,
+ _METADATA_LICENSES_FIELD: _METADATA_DEFAULT_LICENSES_PATH,
+ }
+ ]
- error_msg = 'Error parsing {}: no {} field on path'.format(_METADATA_FILE_PATH, _METADATA_MANIFEST_FIELD)
+ error_msg = "Error parsing {}: no {} field on path".format(
+ _METADATA_FILE_PATH, _METADATA_MANIFEST_FIELD
+ )
raise SOL004PackageException(error_msg)
try:
return self._parse_file_in_blocks(manifest_path)
except (Exception, OSError) as e:
raise SOL004PackageException(error_msg)
try:
return self._parse_file_in_blocks(manifest_path)
except (Exception, OSError) as e:
def _get_package_file_full_path(self, file_relative_path):
return os.path.join(self._package_path, file_relative_path)
def _get_package_file_full_path(self, file_relative_path):
return os.path.join(self._package_path, file_relative_path)
def _parse_file_in_blocks(self, file_relative_path):
file_path = self._get_package_file_full_path(file_relative_path)
with open(file_path) as f:
def _parse_file_in_blocks(self, file_relative_path):
file_path = self._get_package_file_full_path(file_relative_path)
with open(file_path) as f:
parsed_blocks = map(yaml.safe_load, blocks)
return [block for block in parsed_blocks if block is not None]
def _get_package_file_manifest_data(self, file_relative_path):
for file_data in self._manifest_data:
parsed_blocks = map(yaml.safe_load, blocks)
return [block for block in parsed_blocks if block is not None]
def _get_package_file_manifest_data(self, file_relative_path):
for file_data in self._manifest_data:
raise SOL004PackageException(error_msg)
def get_package_file_hash_digest_from_manifest(self, file_relative_path):
raise SOL004PackageException(error_msg)
def get_package_file_hash_digest_from_manifest(self, file_relative_path):
def get_package_file_hash_algorithm_from_manifest(self, file_relative_path):
"""Returns the hash algorithm of a file inside this package as specified on the manifest file."""
def get_package_file_hash_algorithm_from_manifest(self, file_relative_path):
"""Returns the hash algorithm of a file inside this package as specified on the manifest file."""
- function_to_algorithm = {
- 'SHA-256': hashlib.sha256,
- 'SHA-512': hashlib.sha512
- }
+ function_to_algorithm = {"SHA-256": hashlib.sha256, "SHA-512": hashlib.sha512}
with open(file_path, "rb") as f:
return hash_function(f.read()).hexdigest()
except Exception as e:
with open(file_path, "rb") as f:
return hash_function(f.read()).hexdigest()
except Exception as e:
def validate_package_file_hash(self, file_relative_path):
"""Validates the integrity of a file using the hash algorithm and digest on the package manifest."""
def validate_package_file_hash(self, file_relative_path):
"""Validates the integrity of a file using the hash algorithm and digest on the package manifest."""
- error_msg = 'Error validating {} hash: calculated hash {} is different than manifest hash {}'
- raise SOL004PackageException(error_msg.format(file_relative_path, file_hash, expected_file_hash))
+ error_msg = "Error validating {} hash: calculated hash {} is different than manifest hash {}"
+ raise SOL004PackageException(
+ error_msg.format(file_relative_path, file_hash, expected_file_hash)
+ )
def validate_package_hashes(self):
"""Validates the integrity of all files listed on the package manifest."""
def validate_package_hashes(self):
"""Validates the integrity of all files listed on the package manifest."""
- error_msg = 'Error: no {} entry found on {}'.format(_METADATA_DESCRIPTOR_FIELD, _METADATA_FILE_PATH)
+ error_msg = "Error: no {} entry found on {}".format(
+ _METADATA_DESCRIPTOR_FIELD, _METADATA_FILE_PATH
+ )