From a6ba61f46282b12ff04d1dd5190595f1216c4693 Mon Sep 17 00:00:00 2001
From: Pierre Riteau <pierre@stackhpc.com>
Date: Mon, 6 Jan 2025 15:33:22 +0100
Subject: [PATCH] Use kayobe_container only when service is enabled

The overcloud-extras playbook called during overcloud service deploy
would always invoke the kayobe_container module, even when the service
(inspection_store or opensm) was disabled.

With podman, this has the side effect of attempting to pull the image
from the registry, even when `state` is `absent`.

Change behaviour to invoke kayobe_container only when the service is
enabled. This means that a manual container removal is necessary now to
disable these services.

Change-Id: Id3ebd6836ba8f3b2101b94637a89f97fb0eb59e1
---
 ansible/roles/inspection-store/tasks/start.yml             | 3 ++-
 ansible/roles/opensm/tasks/deploy.yml                      | 3 ++-
 .../overcloud-extras-service-absent-2e8a01e1c31f038b.yaml  | 7 +++++++
 3 files changed, 11 insertions(+), 2 deletions(-)
 create mode 100644 releasenotes/notes/overcloud-extras-service-absent-2e8a01e1c31f038b.yaml

diff --git a/ansible/roles/inspection-store/tasks/start.yml b/ansible/roles/inspection-store/tasks/start.yml
index e5565ab8e..0bd7cb6ad 100644
--- a/ansible/roles/inspection-store/tasks/start.yml
+++ b/ansible/roles/inspection-store/tasks/start.yml
@@ -8,9 +8,10 @@
     read_only: "{{ item.value.read_only | default(omit) }}"
     restart_policy: "{{ inspection_store_restart_policy }}"
     restart_retries: "{{ inspection_store_restart_retries | default(omit) }}"
-    state: "{{ item.value.enabled | ternary('started', 'absent') }}"
+    state: started
     volumes: "{{ item.value.volumes }}"
     network_mode: "{{ item.value.network_mode | default(omit) }}"
   with_dict: "{{ inspection_store_services }}"
   notify:
     - Ensure inspection store data directory exists
+  when: item.value.enabled | bool
diff --git a/ansible/roles/opensm/tasks/deploy.yml b/ansible/roles/opensm/tasks/deploy.yml
index d471e96dc..eebd9c2de 100644
--- a/ansible/roles/opensm/tasks/deploy.yml
+++ b/ansible/roles/opensm/tasks/deploy.yml
@@ -8,6 +8,7 @@
     read_only: "{{ item.value.read_only | default(omit) }}"
     restart_policy: "{{ opensm_restart_policy }}"
     restart_retries: "{{ opensm_restart_retries | default(omit) }}"
-    state: "{{ item.value.enabled | ternary('started', 'absent') }}"
+    state: started
     volumes: "{{ item.value.volumes }}"
   with_dict: "{{ opensm_services }}"
+  when: item.value.enabled | bool
diff --git a/releasenotes/notes/overcloud-extras-service-absent-2e8a01e1c31f038b.yaml b/releasenotes/notes/overcloud-extras-service-absent-2e8a01e1c31f038b.yaml
new file mode 100644
index 000000000..3ef7c7d90
--- /dev/null
+++ b/releasenotes/notes/overcloud-extras-service-absent-2e8a01e1c31f038b.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    Stops automatically removing the ``inspection_store`` and ``opensm``
+    containers when they become disabled in Kayobe configuration. Manual
+    container removal is now necessary, except in the case of a full service
+    destroy.