Skip to content

Commit 8f77bc8

Browse files
lmiccinivakwetu
authored andcommitted
fix(skmo): look up RabbitMQ credentials via TransportURL and RabbitMQUser status
Instead of hardcoding the secret name pattern, resolve the credentials secret dynamically: TransportURL -> RabbitMQUser CR -> status.secretName. This works with both legacy and canonical (hash-based) RabbitMQ user naming schemes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Luca Miccini <lmiccini@redhat.com> (cherry picked from commit 4d889fa)
1 parent 8e97cff commit 8f77bc8

1 file changed

Lines changed: 37 additions & 13 deletions

File tree

hooks/playbooks/skmo/configure-leaf-listener.yaml

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
# application network for cross-region RabbitMQ access.
44
#
55
# In the leaf region:
6-
# - Read the RabbitMQ credentials from the dedicated user credentials secret
7-
# created by the RabbitMQ operator when the TransportURL CR is reconciled.
6+
# - Look up the TransportURL CR to find the RabbitMQUser CR reference.
7+
# - Look up the RabbitMQUser CR to find the credentials secret name.
8+
# - Read the credentials from that secret.
89
# - Patch barbicanKeystoneListener to connect to the central RabbitMQ via the
910
# Skupper Listener endpoint using those credentials and its own pool_name.
1011
#
@@ -15,11 +16,7 @@
1516
# Must match the host set in skupper-listener.yaml.
1617
# cifmw_skupper_rabbitmq_port (default: 5671)
1718
# cifmw_skupper_transport_url_name (default: barbican-keystone-listener-regiontwo)
18-
# Name of the TransportURL CR created in prepare-leaf.yaml. The operator
19-
# creates a user credentials secret named:
20-
# rabbitmq-user-<name>-<username>-user
21-
# cifmw_skupper_transport_url_username (default: barbican-keystone-listener-regiontwo)
22-
# Must match the username field set on the TransportURL CR in prepare-leaf.yaml.
19+
# Name of the TransportURL CR created in prepare-leaf.yaml.
2320
- name: Configure barbican-keystone-listener to use Skupper for cross-region RabbitMQ
2421
hosts: "{{ cifmw_target_hook_host | default('localhost') }}"
2522
gather_facts: false
@@ -29,19 +26,46 @@
2926
cifmw_skupper_listener_host: rabbitmq-regionone
3027
cifmw_skupper_rabbitmq_port: 5671
3128
cifmw_skupper_transport_url_name: barbican-keystone-listener-regiontwo
32-
cifmw_skupper_transport_url_username: barbican-keystone-listener-regiontwo
3329
tasks:
34-
- name: Get RabbitMQ user credentials secret for leaf listener
35-
# The RabbitMQ operator creates a secret named
36-
# rabbitmq-user-<transport-url-name>-<username>-user that contains
37-
# the username and password fields for the dedicated RabbitMQ user.
30+
- name: Get TransportURL CR to find the RabbitMQUser reference
31+
kubernetes.core.k8s_info:
32+
api_version: rabbitmq.openstack.org/v1beta1
33+
kind: TransportURL
34+
namespace: "{{ cifmw_skupper_central_namespace }}"
35+
name: "{{ cifmw_skupper_transport_url_name }}"
36+
register: _transport_url
37+
38+
- name: Fail if TransportURL not found
39+
ansible.builtin.fail:
40+
msg: "TransportURL {{ cifmw_skupper_transport_url_name }} not found in namespace {{ cifmw_skupper_central_namespace }}"
41+
when: _transport_url.resources | length == 0
42+
43+
- name: Get RabbitMQUser CR to find the credentials secret name
44+
kubernetes.core.k8s_info:
45+
api_version: rabbitmq.openstack.org/v1beta1
46+
kind: RabbitMQUser
47+
namespace: "{{ cifmw_skupper_central_namespace }}"
48+
name: "{{ _transport_url.resources[0].status.rabbitmqUserRef }}"
49+
register: _rabbitmq_user
50+
51+
- name: Fail if RabbitMQUser not found
52+
ansible.builtin.fail:
53+
msg: "RabbitMQUser {{ _transport_url.resources[0].status.rabbitmqUserRef }} not found in namespace {{ cifmw_skupper_central_namespace }}"
54+
when: _rabbitmq_user.resources | length == 0
55+
56+
- name: Get RabbitMQ user credentials secret
3857
kubernetes.core.k8s_info:
3958
api_version: v1
4059
kind: Secret
4160
namespace: "{{ cifmw_skupper_central_namespace }}"
42-
name: "rabbitmq-user-{{ cifmw_skupper_transport_url_name }}-{{ cifmw_skupper_transport_url_username }}-user"
61+
name: "{{ _rabbitmq_user.resources[0].status.secretName }}"
4362
register: _rabbitmq_user_secret
4463

64+
- name: Fail if credentials secret not found
65+
ansible.builtin.fail:
66+
msg: "Secret {{ _rabbitmq_user.resources[0].status.secretName }} not found in namespace {{ cifmw_skupper_central_namespace }}"
67+
when: _rabbitmq_user_secret.resources | length == 0
68+
4569
- name: Patch leaf barbicanKeystoneListener to use Skupper RabbitMQ endpoint
4670
vars:
4771
_username: "{{ _rabbitmq_user_secret.resources[0].data['username'] | b64decode }}"

0 commit comments

Comments
 (0)