Feature 10991: Gather information relating to the KNF being deployed and inject it as labels in the Kubernetes objects
Change-Id: I5d78de8f369bd893a4a05287763909d2fe360b06
Signed-off-by: Pedro Pereira <pedrocjdpereira@av.it.pt>
diff --git a/n2vc/k8s_helm3_conn.py b/n2vc/k8s_helm3_conn.py
index b267c75..ed0bdaa 100644
--- a/n2vc/k8s_helm3_conn.py
+++ b/n2vc/k8s_helm3_conn.py
@@ -107,6 +107,10 @@
self.log.debug("installing {} in cluster {}".format(kdu_model, cluster_uuid))
+ labels_dict = None
+ if db_dict:
+ labels_dict = await self._labels_dict(db_dict, kdu_instance)
+
# sync local dir
self.fs.sync(from_path=cluster_uuid)
@@ -140,6 +144,7 @@
timeout=timeout,
params=params,
db_dict=db_dict,
+ labels=labels_dict,
kdu_name=kdu_name,
namespace=namespace,
)
@@ -448,6 +453,7 @@
kdu_model: str,
kdu_instance: str,
namespace: str,
+ labels: dict,
params_str: str,
version: str,
atomic: bool,
@@ -472,9 +478,30 @@
if version:
version_str = "--version {}".format(version)
+ # labels
+ post_renderer_args = []
+ post_renderer_str = post_renderer_args_str = ""
+ if labels and self.podLabels_post_renderer_path:
+ post_renderer_args.append(
+ "{}={}".format(
+ self.podLabels_post_renderer_path,
+ " ".join(
+ ["{}:{}".format(key, value) for key, value in labels.items()]
+ ),
+ )
+ )
+
+ if len(post_renderer_args) > 0 and self.main_post_renderer_path:
+ post_renderer_str = "--post-renderer {}".format(
+ self.main_post_renderer_path,
+ )
+ post_renderer_args_str += (
+ "--post-renderer-args '" + ",".join(post_renderer_args) + "'"
+ )
+
command = (
"env KUBECONFIG={kubeconfig} {helm} install {name} {atomic} --output yaml "
- "{params} {timeout} {ns} {model} {ver}".format(
+ "{params} {timeout} {ns} {post_renderer} {post_renderer_args} {model} {ver}".format(
kubeconfig=kubeconfig,
helm=self._helm_command,
name=quote(kdu_instance),
@@ -482,6 +509,8 @@
params=params_str,
timeout=timeout_str,
ns=namespace_str,
+ post_renderer=post_renderer_str,
+ post_renderer_args=post_renderer_args_str,
model=quote(kdu_model),
ver=version_str,
)
@@ -494,6 +523,7 @@
kdu_instance: str,
namespace: str,
scale: int,
+ labels: dict,
version: str,
atomic: bool,
replica_str: str,
@@ -533,6 +563,7 @@
kdu_instance=kdu_instance,
namespace=namespace,
params_str=scale_str,
+ labels=labels,
version=version,
atomic=atomic,
timeout=timeout,
@@ -545,6 +576,7 @@
kdu_instance: str,
namespace: str,
params_str: str,
+ labels: dict,
version: str,
atomic: bool,
timeout: float,
@@ -606,9 +638,31 @@
on_values_str = "--reuse-values"
elif reset_then_reuse_values:
on_values_str = "--reset-then-reuse-values"
+
+ # labels
+ post_renderer_args = []
+ post_renderer_str = post_renderer_args_str = ""
+ if labels and self.podLabels_post_renderer_path:
+ post_renderer_args.append(
+ "{}={}".format(
+ self.podLabels_post_renderer_path,
+ " ".join(
+ ["{}:{}".format(key, value) for key, value in labels.items()]
+ ),
+ )
+ )
+
+ if len(post_renderer_args) > 0 and self.main_post_renderer_path:
+ post_renderer_str = "--post-renderer {}".format(
+ self.main_post_renderer_path,
+ )
+ post_renderer_args_str += (
+ "--post-renderer-args '" + ",".join(post_renderer_args) + "'"
+ )
+
command = (
"env KUBECONFIG={kubeconfig} {helm} upgrade {name} {model} {namespace} {atomic} {force}"
- "--output yaml {params} {timeout} {on_values} {ver}"
+ "--output yaml {params} {timeout} {post_renderer} {post_renderer_args} {on_values} {ver}"
).format(
kubeconfig=kubeconfig,
helm=self._helm_command,
@@ -618,6 +672,8 @@
force=force_str,
params=params_str,
timeout=timeout_str,
+ post_renderer=post_renderer_str,
+ post_renderer_args=post_renderer_args_str,
model=quote(kdu_model),
on_values=on_values_str,
ver=version_str,