Feature 11014: add option to reset values for upgrade operation on helm charts
[osm/N2VC.git] / n2vc / k8s_helm3_conn.py
index 14f7fe0..b267c75 100644 (file)
@@ -549,6 +549,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector):
         atomic: bool,
         timeout: float,
         kubeconfig: str,
+        reset_values: bool = False,
+        reuse_values: bool = True,
+        reset_then_reuse_values: bool = False,
         force: bool = False,
     ) -> str:
         """Generates the command to upgrade a Helm Chart release
@@ -563,6 +566,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector):
                 The --wait flag will be set automatically if --atomic is used
             timeout (float): The time, in seconds, to wait
             kubeconfig (str): Kubeconfig file path
+            reset_values(bool): If set, helm resets values instead of reusing previous values.
+            reuse_values(bool): If set, helm reuses previous values.
+            reset_then_reuse_values(bool): If set, helm resets values, then apply the last release's values
             force (bool): If set, helm forces resource updates through a replacement strategy. This may recreate pods.
         Returns:
             str: command to upgrade a Helm Chart release
@@ -592,9 +598,17 @@ class K8sHelm3Connector(K8sHelmBaseConnector):
         if namespace:
             namespace_str = "--namespace {}".format(quote(namespace))
 
+        # reset, reuse or reset_then_reuse values
+        on_values_str = "--reuse-values"
+        if reset_values:
+            on_values_str = "--reset-values"
+        elif reuse_values:
+            on_values_str = "--reuse-values"
+        elif reset_then_reuse_values:
+            on_values_str = "--reset-then-reuse-values"
         command = (
             "env KUBECONFIG={kubeconfig} {helm} upgrade {name} {model} {namespace} {atomic} {force}"
-            "--output yaml {params} {timeout} --reuse-values {ver}"
+            "--output yaml {params} {timeout} {on_values} {ver}"
         ).format(
             kubeconfig=kubeconfig,
             helm=self._helm_command,
@@ -605,6 +619,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector):
             params=params_str,
             timeout=timeout_str,
             model=quote(kdu_model),
+            on_values=on_values_str,
             ver=version_str,
         )
         return command