projects
/
osm
/
osmclient.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix bug 1721: charms can include reference to .charm files
[osm/osmclient.git]
/
osmclient
/
common
/
package_tool.py
diff --git
a/osmclient/common/package_tool.py
b/osmclient/common/package_tool.py
index
5b56265
..
436053c
100644
(file)
--- a/
osmclient/common/package_tool.py
+++ b/
osmclient/common/package_tool.py
@@
-54,6
+54,7
@@
class PackageTool(object):
detailed,
netslice_subnets,
netslice_vlds,
detailed,
netslice_subnets,
netslice_vlds,
+ old,
):
"""
**Create a package descriptor**
):
"""
**Create a package descriptor**
@@
-71,6
+72,7
@@
class PackageTool(object):
- detailed: include all possible values for NSD, VNFD, NST
- netslice_subnets: number of netslice_subnets for the NST
- netslice_vlds: number of virtual link descriptors for the NST
- detailed: include all possible values for NSD, VNFD, NST
- netslice_subnets: number of netslice_subnets for the NST
- netslice_vlds: number of virtual link descriptors for the NST
+ - old: flag to create a descriptor using the previous OSM format (pre SOL006, OSM<9)
:return: status
"""
:return: status
"""
@@
-79,7
+81,7
@@
class PackageTool(object):
file_loader = PackageLoader("osmclient")
env = Environment(loader=file_loader)
if package_type == "ns":
file_loader = PackageLoader("osmclient")
env = Environment(loader=file_loader)
if package_type == "ns":
- template = env.get_template("nsd.yaml.j2")
+ template = env.get_template("nsd.yaml.j2"
if not old else "nsd_old.yaml.j2"
)
content = {
"name": package_name,
"vendor": vendor,
content = {
"name": package_name,
"vendor": vendor,
@@
-89,7
+91,9
@@
class PackageTool(object):
"detailed": detailed,
}
elif package_type == "vnf":
"detailed": detailed,
}
elif package_type == "vnf":
- template = env.get_template("vnfd.yaml.j2")
+ template = env.get_template(
+ "vnfd.yaml.j2" if not old else "vnfd_old.yaml.j2"
+ )
content = {
"name": package_name,
"vendor": vendor,
content = {
"name": package_name,
"vendor": vendor,
@@
-103,6
+107,7
@@
class PackageTool(object):
"detailed": detailed,
}
elif package_type == "nst":
"detailed": detailed,
}
elif package_type == "nst":
+ # TODO: repo-index did not support nst in OSM<9, no changes in template
template = env.get_template("nst.yaml.j2")
content = {
"name": package_name,
template = env.get_template("nst.yaml.j2")
content = {
"name": package_name,
@@
-117,9
+122,9
@@
class PackageTool(object):
"Wrong descriptor type {}. Options: ns, vnf, nst".format(package_type)
)
"Wrong descriptor type {}. Options: ns, vnf, nst".format(package_type)
)
-
# print
("To be rendered: {}".format(content))
+
self._logger.debug
("To be rendered: {}".format(content))
output = template.render(content)
output = template.render(content)
-
# print
(output)
+
self._logger.debug
(output)
structure = self.discover_folder_structure(
base_directory, package_name, override
structure = self.discover_folder_structure(
base_directory, package_name, override
@@
-149,27
+154,31
@@
class PackageTool(object):
descriptors_paths = [
f for f in glob.glob(base_directory + "/*.yaml", recursive=recursive)
]
descriptors_paths = [
f for f in glob.glob(base_directory + "/*.yaml", recursive=recursive)
]
- print("Base directory: {}".format(base_directory))
- print("{} Descriptors found to validate".format(len(descriptors_paths)))
+ self._logger.info("Base directory: {}".format(base_directory))
+ self._logger.info(
+ "{} Descriptors found to validate".format(len(descriptors_paths))
+ )
for desc_path in descriptors_paths:
with open(desc_path) as descriptor_file:
descriptor_data = descriptor_file.read()
desc_type = "-"
try:
for desc_path in descriptors_paths:
with open(desc_path) as descriptor_file:
descriptor_data = descriptor_file.read()
desc_type = "-"
try:
+ # TODO: refactor validation_im.yaml_validation to @staticmethod
desc_type, descriptor_data = validation_im.yaml_validation(
self, descriptor_data
)
desc_type, descriptor_data = validation_im.yaml_validation(
self, descriptor_data
)
+ self._logger.debug(f"Validate {desc_type} {descriptor_data}")
if not old_format:
if desc_type == "vnfd" or desc_type == "nsd":
if not old_format:
if desc_type == "vnfd" or desc_type == "nsd":
-
print
(
+
self._logger.error
(
"OSM descriptor '{}' written in an unsupported format. Please update to ETSI SOL006 format".format(
desc_path
)
)
"OSM descriptor '{}' written in an unsupported format. Please update to ETSI SOL006 format".format(
desc_path
)
)
-
print
(
+
self._logger.warning
(
"Package validation skipped. It can still be done with 'osm package-validate --old'"
)
"Package validation skipped. It can still be done with 'osm package-validate --old'"
)
-
print
(
+
self._logger.warning
(
"Package build can still be done with 'osm package-build --skip-validation'"
)
raise Exception("Not SOL006 format")
"Package build can still be done with 'osm package-build --skip-validation'"
)
raise Exception("Not SOL006 format")
@@
-178,6
+187,7
@@
class PackageTool(object):
{"type": desc_type, "path": desc_path, "valid": "OK", "error": "-"}
)
except Exception as e:
{"type": desc_type, "path": desc_path, "valid": "OK", "error": "-"}
)
except Exception as e:
+ self._logger.error(f"Validation error: {e}", exc_info=True)
table.append(
{
"type": desc_type,
table.append(
{
"type": desc_type,
@@
-186,6
+196,7
@@
class PackageTool(object):
"error": str(e),
}
)
"error": str(e),
}
)
+ self._logger.debug(table[-1])
return table
def translate(self, base_directory, recursive=True, dryrun=False):
return table
def translate(self, base_directory, recursive=True, dryrun=False):
@@
-531,6
+542,8
@@
class PackageTool(object):
else:
if not os.path.isdir(
"{}/charms/{}".format(package_folder, charmName)
else:
if not os.path.isdir(
"{}/charms/{}".format(package_folder, charmName)
+ ) and not os.path.isfile(
+ "{}/charms/{}".format(package_folder, charmName)
):
raise ClientException(
"The charm: {} referenced in the descriptor file "
):
raise ClientException(
"The charm: {} referenced in the descriptor file "
@@
-712,9
+725,12
@@
class PackageTool(object):
self._logger.debug(
"Copying tree: {} -> {}".format(s_charm, d_temp)
)
self._logger.debug(
"Copying tree: {} -> {}".format(s_charm, d_temp)
)
- shutil.copytree(
- s_charm, d_temp, symlinks=True, ignore=ignore
- )
+ if os.path.isdir(s_charm):
+ shutil.copytree(
+ s_charm, d_temp, symlinks=True, ignore=ignore
+ )
+ else:
+ shutil.copy2(s_charm, d_temp)
self._logger.debug("DONE")
else:
self._logger.debug("Copying tree: {} -> {}".format(s, d))
self._logger.debug("DONE")
else:
self._logger.debug("Copying tree: {} -> {}".format(s, d))