Skip to content

Commit edebfb5

Browse files
authored
Restart QDR after changing the password (#530) (#534)
* Restart QDR after changing the password * Fixes bug reported here: #517 (comment) * Avoids an extra manual step when changing password * Would affect users who upgrade from earlier STF and subsequently enable basic auth * Also users who need to change their passwords * Fixing ansible lint * Update roles/servicetelemetry/tasks/component_qdr.yml * Adjust QDR restarts to account for HA * [smoketest] Wait for qdr-test to be Running * [smoketest] Wait for QDR password upgrade * Remove zuul QDR auth override (cherry picked from commit 16b8197)
1 parent 94e343c commit edebfb5

File tree

3 files changed

+42
-17
lines changed

3 files changed

+42
-17
lines changed

ci/vars-zuul-common.yml

-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22
namespace: "service-telemetry"
33
setup_bundle_registry_tls_ca: false
44
setup_bundle_registry_auth: false
5-
__service_telemetry_transports_qdr_auth: none
65
base_dir: "{{ sto_dir }}/build"
76
logfile_dir: "{{ ansible_user_dir }}/zuul-output/logs/controller"

roles/servicetelemetry/tasks/component_qdr.yml

+34-14
Original file line numberDiff line numberDiff line change
@@ -163,21 +163,41 @@
163163
namespace: "{{ ansible_operator_meta.namespace }}"
164164
register: _qdr_basicauth_object
165165

166-
# Because https://github.com/interconnectedcloud/qdr-operator/blob/576d2b33dac71437ea2b165caaaf6413220767fe/pkg/controller/interconnect/interconnect_controller.go#L634
167-
- name: Perform a one-time upgrade to the default generated password for QDR BasicAuth
168-
k8s:
169-
definition:
170-
kind: Secret
171-
apiVersion: v1
172-
metadata:
173-
name: "{{ ansible_operator_meta.name }}-interconnect-users"
166+
- when:
167+
- _qdr_basicauth_object.resources[0] is defined and _qdr_basicauth_object.resources[0].metadata.labels.stf_one_time_upgrade is not defined
168+
block:
169+
# Because https://github.com/interconnectedcloud/qdr-operator/blob/576d2b33dac71437ea2b165caaaf6413220767fe/pkg/controller/interconnect/interconnect_controller.go#L634
170+
- name: Perform a one-time upgrade to the default generated password for QDR BasicAuth
171+
k8s:
172+
definition:
173+
kind: Secret
174+
apiVersion: v1
175+
metadata:
176+
name: "{{ ansible_operator_meta.name }}-interconnect-users"
177+
namespace: "{{ ansible_operator_meta.namespace }}"
178+
labels:
179+
stf_one_time_upgrade: "{{ lookup('pipe', 'date +%s') }}"
180+
stringData:
181+
guest: "{{ lookup('password', '/dev/null chars=ascii_letters,digits length=32') }}"
182+
183+
# label_selectors on the k8s object need kubernetes.core>=2.2.0
184+
- name: Get the list of QDR pods
185+
k8s_info:
186+
api_version: v1
187+
kind: Pod
188+
namespace: "{{ ansible_operator_meta.namespace }}"
189+
label_selectors:
190+
- application={{ ansible_operator_meta.name }}-interconnect
191+
register: _qdr_pod
192+
193+
- name: Restart QDR pods to pick up new password
194+
k8s:
195+
state: absent
196+
api_version: v1
197+
kind: Pod
174198
namespace: "{{ ansible_operator_meta.namespace }}"
175-
labels:
176-
stf_one_time_upgrade: "{{ lookup('pipe', 'date +%s') }}"
177-
stringData:
178-
guest: "{{ lookup('password', '/dev/null chars=ascii_letters,digits length=32') }}"
179-
when:
180-
- _qdr_basicauth_object.resources[0] is defined and _qdr_basicauth_object.resources[0].metadata.labels.stf_one_time_upgrade is not defined
199+
name: "{{ item.metadata.name }}"
200+
loop: "{{ _qdr_pod.resources }}"
181201

182202
- name: Set default Interconnect manifest
183203
set_fact:

tests/smoketest/smoketest.sh

+8-2
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,20 @@ oc create configmap stf-smoketest-collectd-entrypoint-script --from-file "${REL}
5959
oc create configmap stf-smoketest-ceilometer-publisher --from-file "${REL}/ceilometer_publish.py"
6060
oc create configmap stf-smoketest-ceilometer-entrypoint-script --from-file "${REL}/smoketest_ceilometer_entrypoint.sh"
6161

62-
echo "*** [INFO] Creating Mock OSP Metrics QDR router..."
62+
echo "*** [INFO] Waiting for QDR password upgrade"
63+
AMQP_PASS=''
64+
while [ ${#AMQP_PASS} -lt 32 ]; do AMQP_PASS=$(oc get secret default-interconnect-users -o json | jq -r .data.guest | base64 -d); sleep 3; done
65+
66+
echo "*** [INFO] Creating Mock OSP Metrics QDR..."
6367
oc delete pod qdr-test
6468
oc delete service qdr-test
6569
oc delete configmap qdr-test-config
66-
AMQP_PASS=$(oc get secret default-interconnect-users -o json | jq -r .data.guest | base64 -d)
6770
oc create -f <(sed -e "s/<<AMQP_PASS>>/${AMQP_PASS}/;" "${REL}/qdr-test.conf.yaml.template")
6871
oc create -f "${REL}/qdr-test.yaml"
6972

73+
echo -e "\n* [INFO] Waiting for OSP Metrics QDR pod to be Running\n"
74+
oc wait --for=jsonpath='{.status.phase}'=Running pod/qdr-test
75+
7076
echo "*** [INFO] Creating smoketest jobs..."
7177
oc delete job -l app=stf-smoketest
7278
for NAME in "${CLOUDNAMES[@]}"; do

0 commit comments

Comments
 (0)