diff --git a/pyhelm3/client.py b/pyhelm3/client.py index 7039e52..0fe4707 100644 --- a/pyhelm3/client.py +++ b/pyhelm3/client.py @@ -219,6 +219,7 @@ async def install_or_upgrade_release( chart: Chart, *values: t.Dict[str, t.Any], atomic: bool = False, + rollback_on_failure: bool = False, cleanup_on_fail: bool = False, create_namespace: bool = True, description: t.Optional[str] = None, @@ -243,6 +244,7 @@ async def install_or_upgrade_release( chart.ref, mergeconcat(*values) if values else None, atomic = atomic, + rollback_on_failure = rollback_on_failure, cleanup_on_fail = cleanup_on_fail, create_namespace = create_namespace, description = description, @@ -344,6 +346,7 @@ async def ensure_release( chart: Chart, *values: t.Dict[str, t.Any], atomic: bool = False, + rollback_on_failure: bool = False, cleanup_on_fail: bool = False, create_namespace: bool = True, description: t.Optional[str] = None, @@ -381,6 +384,7 @@ async def ensure_release( chart, values, atomic = atomic, + rollback_on_failure = rollback_on_failure, cleanup_on_fail = cleanup_on_fail, create_namespace = create_namespace, description = description, diff --git a/pyhelm3/command.py b/pyhelm3/command.py index 23b852d..ab51826 100644 --- a/pyhelm3/command.py +++ b/pyhelm3/command.py @@ -513,6 +513,7 @@ async def install_or_upgrade( values: t.Optional[t.Dict[str, t.Any]] = None, *, atomic: bool = False, + rollback_on_failure: bool = False, cleanup_on_fail: bool = False, create_namespace: bool = True, description: t.Optional[str] = None, @@ -546,8 +547,12 @@ async def install_or_upgrade( # We send the values in on stdin "--values", "-", ] - if atomic: - command.append("--atomic") + if atomic or rollback_on_failure: + helm_binary_version = await self.version() + if helm_binary_version.startswith("v4"): + command.append("--rollback-on-failure") + else: + command.append("--atomic") if cleanup_on_fail: command.append("--cleanup-on-fail") if create_namespace: