Skip to content

Commit 184a5e1

Browse files
vakwetuclaude
authored andcommitted
[skmo] Replace shell tasks with kubernetes.core in prepare-leaf
Address non-blocking review suggestions from evallesp and fultonj on ci-framework PR #3766. - Replace the 'Ensure leaf osp-secret exists' and 'Read leaf admin password' shell tasks with a single set_fact that parses the osp-secrets.env file directly using regex_findall. Pre-creating the secret in the leaf namespace is unnecessary because kustomize already creates it there during stage 6; the hook only ever needed the password value itself. - Replace the 'Create TransportURL CR' and 'Wait for TransportURL' shell tasks with kubernetes.core.k8s (idempotent apply) and kubernetes.core.k8s_info with retries/until (condition polling). Signed-off-by: Ade Lee <alee@redhat.com> Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 35e7d12 commit 184a5e1

1 file changed

Lines changed: 31 additions & 42 deletions

File tree

hooks/playbooks/skmo/prepare-leaf.yaml

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
osp_secrets_env_file: "{{ cifmw_architecture_repo }}/lib/control-plane/base/osp-secrets.env"
88
central_namespace: openstack
99
leaf_namespace: openstack2
10-
leaf_secret_name: osp-secret
1110
central_rootca_secret: rootca-public
1211
central_rootca_internal_secret: rootca-internal
1312
leaf_transport_url_name: barbican-keystone-listener-regiontwo
@@ -59,26 +58,11 @@
5958
keystone_public_url: "{{ skmo_values.data.keystonePublicURL }}"
6059
ca_bundle_secret_name: "{{ skmo_values.data.leafCaBundleSecretName }}"
6160

62-
- name: Ensure leaf osp-secret exists (pre-create from env file)
63-
ansible.builtin.shell: |
64-
set -euo pipefail
65-
if ! oc -n {{ leaf_namespace }} get secret {{ leaf_secret_name }} >/dev/null 2>&1; then
66-
oc -n {{ leaf_namespace }} create secret generic {{ leaf_secret_name }} \
67-
--from-env-file="{{ osp_secrets_env_file }}" \
68-
--dry-run=client -o yaml | oc apply -f -
69-
fi
70-
args:
71-
executable: /bin/bash
72-
73-
- name: Read leaf admin password from leaf secret
74-
ansible.builtin.shell: |
75-
set -euo pipefail
76-
oc -n {{ leaf_namespace }} get secret {{ leaf_secret_name }} \
77-
-o jsonpath='{.data.{{ leaf_admin_password_key }}}' | base64 -d
78-
args:
79-
executable: /bin/bash
80-
register: leaf_admin_password
81-
changed_when: false
61+
- name: Read leaf admin password from env file
62+
ansible.builtin.set_fact:
63+
leaf_admin_password: >-
64+
{{ dict(lookup('file', osp_secrets_env_file) |
65+
regex_findall('^([^#=\n][^=\n]*)=(.*)', multiline=True))[leaf_admin_password_key] | trim }}
8266
8367
- name: Ensure leaf region exists in central Keystone
8468
ansible.builtin.shell: |
@@ -124,7 +108,7 @@
124108
if ! oc -n {{ central_namespace }} rsh openstackclient \
125109
openstack user show {{ leaf_admin_user }} >/dev/null 2>&1; then
126110
oc -n {{ central_namespace }} rsh openstackclient \
127-
openstack user create --domain Default --password "{{ leaf_admin_password.stdout | trim }}" {{ leaf_admin_user }}
111+
openstack user create --domain Default --password "{{ leaf_admin_password }}" {{ leaf_admin_user }}
128112
fi
129113
oc -n {{ central_namespace }} rsh openstackclient \
130114
openstack role add --project {{ leaf_admin_project }} --user {{ leaf_admin_user }} admin
@@ -165,28 +149,33 @@
165149
}) }}"
166150

167151
- name: Create TransportURL CR in central region for leaf listener
168-
ansible.builtin.shell: |
169-
set -euo pipefail
170-
oc apply -f - <<EOF
171-
apiVersion: rabbitmq.openstack.org/v1beta1
172-
kind: TransportURL
173-
metadata:
174-
name: {{ leaf_transport_url_name }}
175-
namespace: {{ central_namespace }}
176-
spec:
177-
rabbitmqClusterName: rabbitmq
178-
EOF
179-
args:
180-
executable: /bin/bash
152+
kubernetes.core.k8s:
153+
state: present
154+
definition:
155+
apiVersion: rabbitmq.openstack.org/v1beta1
156+
kind: TransportURL
157+
metadata:
158+
name: "{{ leaf_transport_url_name }}"
159+
namespace: "{{ central_namespace }}"
160+
spec:
161+
rabbitmqClusterName: rabbitmq
181162

182163
- name: Wait for TransportURL to be ready
183-
ansible.builtin.shell: |
184-
set -euo pipefail
185-
oc wait transporturl {{ leaf_transport_url_name }} \
186-
-n {{ central_namespace }} \
187-
--for=condition=Ready --timeout=120s
188-
args:
189-
executable: /bin/bash
164+
kubernetes.core.k8s_info:
165+
api_version: rabbitmq.openstack.org/v1beta1
166+
kind: TransportURL
167+
name: "{{ leaf_transport_url_name }}"
168+
namespace: "{{ central_namespace }}"
169+
register: _transport_url_info
170+
retries: 12
171+
delay: 10
172+
until:
173+
- _transport_url_info.resources | length > 0
174+
- _transport_url_info.resources[0].status is defined
175+
- _transport_url_info.resources[0].status.conditions is defined
176+
- _transport_url_info.resources[0].status.conditions |
177+
selectattr('type', 'equalto', 'Ready') |
178+
selectattr('status', 'equalto', 'True') | list | length > 0
190179

191180
- name: Get transport URL secret from central namespace
192181
kubernetes.core.k8s_info:

0 commit comments

Comments
 (0)