2026-03-20 15:48:55,966 p=31181 u=zuul n=ansible | Starting galaxy collection install process 2026-03-20 15:48:55,967 p=31181 u=zuul n=ansible | Process install dependency map 2026-03-20 15:49:15,030 p=31181 u=zuul n=ansible | Starting collection install process 2026-03-20 15:49:15,030 p=31181 u=zuul n=ansible | Installing 'cifmw.general:1.0.0+1d92b065' to '/home/zuul/.ansible/collections/ansible_collections/cifmw/general' 2026-03-20 15:49:15,441 p=31181 u=zuul n=ansible | Created collection for cifmw.general:1.0.0+1d92b065 at /home/zuul/.ansible/collections/ansible_collections/cifmw/general 2026-03-20 15:49:15,441 p=31181 u=zuul n=ansible | cifmw.general:1.0.0+1d92b065 was installed successfully 2026-03-20 15:49:15,441 p=31181 u=zuul n=ansible | Installing 'containers.podman:1.16.2' to '/home/zuul/.ansible/collections/ansible_collections/containers/podman' 2026-03-20 15:49:15,481 p=31181 u=zuul n=ansible | Created collection for containers.podman:1.16.2 at /home/zuul/.ansible/collections/ansible_collections/containers/podman 2026-03-20 15:49:15,481 p=31181 u=zuul n=ansible | containers.podman:1.16.2 was installed successfully 2026-03-20 15:49:15,481 p=31181 u=zuul n=ansible | Installing 'community.general:10.0.1' to '/home/zuul/.ansible/collections/ansible_collections/community/general' 2026-03-20 15:49:15,981 p=31181 u=zuul n=ansible | Created collection for community.general:10.0.1 at /home/zuul/.ansible/collections/ansible_collections/community/general 2026-03-20 15:49:15,981 p=31181 u=zuul n=ansible | community.general:10.0.1 was installed successfully 2026-03-20 15:49:15,981 p=31181 u=zuul n=ansible | Installing 'ansible.posix:1.6.2' to '/home/zuul/.ansible/collections/ansible_collections/ansible/posix' 2026-03-20 15:49:16,015 p=31181 u=zuul n=ansible | Created collection for ansible.posix:1.6.2 at /home/zuul/.ansible/collections/ansible_collections/ansible/posix 2026-03-20 15:49:16,015 p=31181 u=zuul n=ansible | ansible.posix:1.6.2 was installed successfully 2026-03-20 15:49:16,015 p=31181 u=zuul n=ansible | Installing 'ansible.utils:5.1.2' to '/home/zuul/.ansible/collections/ansible_collections/ansible/utils' 2026-03-20 15:49:16,085 p=31181 u=zuul n=ansible | Created collection for ansible.utils:5.1.2 at /home/zuul/.ansible/collections/ansible_collections/ansible/utils 2026-03-20 15:49:16,085 p=31181 u=zuul n=ansible | ansible.utils:5.1.2 was installed successfully 2026-03-20 15:49:16,085 p=31181 u=zuul n=ansible | Installing 'community.libvirt:1.3.0' to '/home/zuul/.ansible/collections/ansible_collections/community/libvirt' 2026-03-20 15:49:16,101 p=31181 u=zuul n=ansible | Created collection for community.libvirt:1.3.0 at /home/zuul/.ansible/collections/ansible_collections/community/libvirt 2026-03-20 15:49:16,101 p=31181 u=zuul n=ansible | community.libvirt:1.3.0 was installed successfully 2026-03-20 15:49:16,101 p=31181 u=zuul n=ansible | Installing 'community.crypto:2.22.3' to '/home/zuul/.ansible/collections/ansible_collections/community/crypto' 2026-03-20 15:49:16,196 p=31181 u=zuul n=ansible | Created collection for community.crypto:2.22.3 at /home/zuul/.ansible/collections/ansible_collections/community/crypto 2026-03-20 15:49:16,196 p=31181 u=zuul n=ansible | community.crypto:2.22.3 was installed successfully 2026-03-20 15:49:16,196 p=31181 u=zuul n=ansible | Installing 'kubernetes.core:5.0.0' to '/home/zuul/.ansible/collections/ansible_collections/kubernetes/core' 2026-03-20 15:49:16,276 p=31181 u=zuul n=ansible | Created collection for kubernetes.core:5.0.0 at /home/zuul/.ansible/collections/ansible_collections/kubernetes/core 2026-03-20 15:49:16,277 p=31181 u=zuul n=ansible | kubernetes.core:5.0.0 was installed successfully 2026-03-20 15:49:16,277 p=31181 u=zuul n=ansible | Installing 'ansible.netcommon:7.1.0' to '/home/zuul/.ansible/collections/ansible_collections/ansible/netcommon' 2026-03-20 15:49:16,326 p=31181 u=zuul n=ansible | Created collection for ansible.netcommon:7.1.0 at /home/zuul/.ansible/collections/ansible_collections/ansible/netcommon 2026-03-20 15:49:16,327 p=31181 u=zuul n=ansible | ansible.netcommon:7.1.0 was installed successfully 2026-03-20 15:49:16,327 p=31181 u=zuul n=ansible | Installing 'openstack.config_template:2.1.1' to '/home/zuul/.ansible/collections/ansible_collections/openstack/config_template' 2026-03-20 15:49:16,339 p=31181 u=zuul n=ansible | Created collection for openstack.config_template:2.1.1 at /home/zuul/.ansible/collections/ansible_collections/openstack/config_template 2026-03-20 15:49:16,340 p=31181 u=zuul n=ansible | openstack.config_template:2.1.1 was installed successfully 2026-03-20 15:49:16,340 p=31181 u=zuul n=ansible | Installing 'junipernetworks.junos:9.1.0' to '/home/zuul/.ansible/collections/ansible_collections/junipernetworks/junos' 2026-03-20 15:49:16,491 p=31181 u=zuul n=ansible | Created collection for junipernetworks.junos:9.1.0 at /home/zuul/.ansible/collections/ansible_collections/junipernetworks/junos 2026-03-20 15:49:16,491 p=31181 u=zuul n=ansible | junipernetworks.junos:9.1.0 was installed successfully 2026-03-20 15:49:16,491 p=31181 u=zuul n=ansible | Installing 'cisco.ios:9.0.3' to '/home/zuul/.ansible/collections/ansible_collections/cisco/ios' 2026-03-20 15:49:16,673 p=31181 u=zuul n=ansible | Created collection for cisco.ios:9.0.3 at /home/zuul/.ansible/collections/ansible_collections/cisco/ios 2026-03-20 15:49:16,673 p=31181 u=zuul n=ansible | cisco.ios:9.0.3 was installed successfully 2026-03-20 15:49:16,673 p=31181 u=zuul n=ansible | Installing 'mellanox.onyx:1.0.0' to '/home/zuul/.ansible/collections/ansible_collections/mellanox/onyx' 2026-03-20 15:49:16,695 p=31181 u=zuul n=ansible | Created collection for mellanox.onyx:1.0.0 at /home/zuul/.ansible/collections/ansible_collections/mellanox/onyx 2026-03-20 15:49:16,696 p=31181 u=zuul n=ansible | mellanox.onyx:1.0.0 was installed successfully 2026-03-20 15:49:16,696 p=31181 u=zuul n=ansible | Installing 'community.okd:4.0.0' to '/home/zuul/.ansible/collections/ansible_collections/community/okd' 2026-03-20 15:49:16,718 p=31181 u=zuul n=ansible | Created collection for community.okd:4.0.0 at /home/zuul/.ansible/collections/ansible_collections/community/okd 2026-03-20 15:49:16,718 p=31181 u=zuul n=ansible | community.okd:4.0.0 was installed successfully 2026-03-20 15:49:16,718 p=31181 u=zuul n=ansible | Installing '@NAMESPACE@.@NAME@:3.1.4' to '/home/zuul/.ansible/collections/ansible_collections/@NAMESPACE@/@NAME@' 2026-03-20 15:49:16,785 p=31181 u=zuul n=ansible | Created collection for @NAMESPACE@.@NAME@:3.1.4 at /home/zuul/.ansible/collections/ansible_collections/@NAMESPACE@/@NAME@ 2026-03-20 15:49:16,785 p=31181 u=zuul n=ansible | @NAMESPACE@.@NAME@:3.1.4 was installed successfully 2026-03-20 15:49:24,395 p=31742 u=zuul n=ansible | PLAY [Bootstrap playbook] ****************************************************** 2026-03-20 15:49:24,439 p=31742 u=zuul n=ansible | TASK [Gathering Facts ] ******************************************************** 2026-03-20 15:49:24,439 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:24 +0000 (0:00:00.064) 0:00:00.064 ********** 2026-03-20 15:49:24,439 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:24 +0000 (0:00:00.063) 0:00:00.063 ********** 2026-03-20 15:49:25,654 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:25,678 p=31742 u=zuul n=ansible | TASK [cifmw_setup : Set custom cifmw PATH reusable fact cifmw_path={{ ansible_user_dir }}/.crc/bin:{{ ansible_user_dir }}/.crc/bin/oc:{{ ansible_user_dir }}/bin:{{ ansible_env.PATH }}, cacheable=True] *** 2026-03-20 15:49:25,679 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:01.239) 0:00:01.304 ********** 2026-03-20 15:49:25,679 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:01.239) 0:00:01.303 ********** 2026-03-20 15:49:25,704 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:25,712 p=31742 u=zuul n=ansible | TASK [cifmw_setup : Get customized parameters ci_framework_params={{ hostvars[inventory_hostname] | dict2items | selectattr("key", "match", "^(cifmw|pre|post)_(?!install_yamls|openshift_token|openshift_login|openshift_kubeconfig).*") | list | items2dict }}] *** 2026-03-20 15:49:25,712 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:00.033) 0:00:01.337 ********** 2026-03-20 15:49:25,712 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:00.033) 0:00:01.336 ********** 2026-03-20 15:49:25,789 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:25,795 p=31742 u=zuul n=ansible | TASK [install_ca : Ensure target directory exists path={{ cifmw_install_ca_trust_dir }}, state=directory, mode=0755] *** 2026-03-20 15:49:25,795 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:00.082) 0:00:01.420 ********** 2026-03-20 15:49:25,795 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:25 +0000 (0:00:00.082) 0:00:01.419 ********** 2026-03-20 15:49:26,130 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:26,138 p=31742 u=zuul n=ansible | TASK [install_ca : Install internal CA from url url={{ cifmw_install_ca_url }}, dest={{ cifmw_install_ca_trust_dir }}, validate_certs={{ cifmw_install_ca_url_validate_certs | default(omit) }}, mode=0644] *** 2026-03-20 15:49:26,138 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.343) 0:00:01.763 ********** 2026-03-20 15:49:26,138 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.343) 0:00:01.762 ********** 2026-03-20 15:49:26,153 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:26,159 p=31742 u=zuul n=ansible | TASK [install_ca : Install custom CA bundle from inline dest={{ cifmw_install_ca_trust_dir }}/cifmw_inline_ca_bundle.crt, content={{ cifmw_install_ca_bundle_inline }}, mode=0644] *** 2026-03-20 15:49:26,159 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.021) 0:00:01.784 ********** 2026-03-20 15:49:26,159 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.021) 0:00:01.783 ********** 2026-03-20 15:49:26,175 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:26,183 p=31742 u=zuul n=ansible | TASK [install_ca : Install custom CA bundle from file dest={{ cifmw_install_ca_trust_dir }}/{{ cifmw_install_ca_bundle_src | basename }}, src={{ cifmw_install_ca_bundle_src }}, mode=0644] *** 2026-03-20 15:49:26,183 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.023) 0:00:01.808 ********** 2026-03-20 15:49:26,183 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.023) 0:00:01.807 ********** 2026-03-20 15:49:26,199 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:26,209 p=31742 u=zuul n=ansible | TASK [install_ca : Update ca bundle _raw_params=update-ca-trust] *************** 2026-03-20 15:49:26,209 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.026) 0:00:01.834 ********** 2026-03-20 15:49:26,209 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.026) 0:00:01.833 ********** 2026-03-20 15:49:26,226 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:26,240 p=31742 u=zuul n=ansible | TASK [repo_setup : Ensure directories are present path={{ cifmw_repo_setup_basedir }}/{{ item }}, state=directory, mode=0755] *** 2026-03-20 15:49:26,240 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.030) 0:00:01.865 ********** 2026-03-20 15:49:26,240 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.030) 0:00:01.864 ********** 2026-03-20 15:49:26,436 p=31742 u=zuul n=ansible | changed: [controller] => (item=tmp) 2026-03-20 15:49:26,627 p=31742 u=zuul n=ansible | changed: [controller] => (item=artifacts/repositories) 2026-03-20 15:49:26,811 p=31742 u=zuul n=ansible | changed: [controller] => (item=venv/repo_setup) 2026-03-20 15:49:26,817 p=31742 u=zuul n=ansible | TASK [repo_setup : Make sure git-core package is installed name=git-core, state=present] *** 2026-03-20 15:49:26,818 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.577) 0:00:02.443 ********** 2026-03-20 15:49:26,818 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:26 +0000 (0:00:00.577) 0:00:02.441 ********** 2026-03-20 15:49:27,811 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:27,816 p=31742 u=zuul n=ansible | TASK [repo_setup : Get repo-setup repository accept_hostkey=True, dest={{ cifmw_repo_setup_basedir }}/tmp/repo-setup, repo={{ cifmw_repo_setup_src }}] *** 2026-03-20 15:49:27,816 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:27 +0000 (0:00:00.998) 0:00:03.441 ********** 2026-03-20 15:49:27,816 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:27 +0000 (0:00:00.998) 0:00:03.440 ********** 2026-03-20 15:49:28,917 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:28,924 p=31742 u=zuul n=ansible | TASK [repo_setup : Initialize python venv and install requirements virtualenv={{ cifmw_repo_setup_venv }}, requirements={{ cifmw_repo_setup_basedir }}/tmp/repo-setup/requirements.txt, virtualenv_command=python3 -m venv --system-site-packages --upgrade-deps] *** 2026-03-20 15:49:28,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:28 +0000 (0:00:01.108) 0:00:04.550 ********** 2026-03-20 15:49:28,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:28 +0000 (0:00:01.108) 0:00:04.549 ********** 2026-03-20 15:49:37,963 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:37,974 p=31742 u=zuul n=ansible | TASK [repo_setup : Install repo-setup package chdir={{ cifmw_repo_setup_basedir }}/tmp/repo-setup, creates={{ cifmw_repo_setup_venv }}/bin/repo-setup, _raw_params={{ cifmw_repo_setup_venv }}/bin/python setup.py install] *** 2026-03-20 15:49:37,975 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:37 +0000 (0:00:09.050) 0:00:13.600 ********** 2026-03-20 15:49:37,975 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:37 +0000 (0:00:09.050) 0:00:13.599 ********** 2026-03-20 15:49:38,923 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:38,934 p=31742 u=zuul n=ansible | TASK [repo_setup : Set cifmw_repo_setup_dlrn_hash_tag from content provider cifmw_repo_setup_dlrn_hash_tag={{ content_provider_dlrn_md5_hash }}] *** 2026-03-20 15:49:38,934 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:38 +0000 (0:00:00.959) 0:00:14.559 ********** 2026-03-20 15:49:38,935 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:38 +0000 (0:00:00.959) 0:00:14.558 ********** 2026-03-20 15:49:38,951 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:38,957 p=31742 u=zuul n=ansible | TASK [repo_setup : Run repo-setup _raw_params={{ cifmw_repo_setup_venv }}/bin/repo-setup {{ cifmw_repo_setup_promotion }} {{ cifmw_repo_setup_additional_repos }} -d {{ cifmw_repo_setup_os_release }}{{ cifmw_repo_setup_dist_major_version }} -b {{ cifmw_repo_setup_branch }} --rdo-mirror {{ cifmw_repo_setup_rdo_mirror }} {% if cifmw_repo_setup_dlrn_hash_tag | length > 0 %} --dlrn-hash-tag {{ cifmw_repo_setup_dlrn_hash_tag }} {% endif %} -o {{ cifmw_repo_setup_output }}] *** 2026-03-20 15:49:38,957 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:38 +0000 (0:00:00.022) 0:00:14.582 ********** 2026-03-20 15:49:38,957 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:38 +0000 (0:00:00.022) 0:00:14.581 ********** 2026-03-20 15:49:39,572 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:39,584 p=31742 u=zuul n=ansible | TASK [repo_setup : Get component repo url={{ cifmw_repo_setup_dlrn_uri }}/{{ cifmw_repo_setup_os_release }}{{ cifmw_repo_setup_dist_major_version }}-{{ cifmw_repo_setup_branch }}/component/{{ cifmw_repo_setup_component_name }}/{{ cifmw_repo_setup_component_promotion_tag }}/delorean.repo, dest={{ cifmw_repo_setup_output }}/{{ cifmw_repo_setup_component_name }}_{{ cifmw_repo_setup_component_promotion_tag }}_delorean.repo, mode=0644] *** 2026-03-20 15:49:39,584 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.627) 0:00:15.209 ********** 2026-03-20 15:49:39,584 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.627) 0:00:15.208 ********** 2026-03-20 15:49:39,610 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:39,618 p=31742 u=zuul n=ansible | TASK [repo_setup : Rename component repo path={{ cifmw_repo_setup_output }}/{{ cifmw_repo_setup_component_name }}_{{ cifmw_repo_setup_component_promotion_tag }}_delorean.repo, regexp=delorean-component-{{ cifmw_repo_setup_component_name }}, replace={{ cifmw_repo_setup_component_name }}-{{ cifmw_repo_setup_component_promotion_tag }}] *** 2026-03-20 15:49:39,618 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.034) 0:00:15.244 ********** 2026-03-20 15:49:39,619 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.034) 0:00:15.242 ********** 2026-03-20 15:49:39,643 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:39,649 p=31742 u=zuul n=ansible | TASK [repo_setup : Disable component repo in current-podified dlrn repo path={{ cifmw_repo_setup_output }}/delorean.repo, section=delorean-component-{{ cifmw_repo_setup_component_name }}, option=enabled, value=0, mode=0644] *** 2026-03-20 15:49:39,649 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.030) 0:00:15.274 ********** 2026-03-20 15:49:39,649 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.030) 0:00:15.273 ********** 2026-03-20 15:49:39,674 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:39,683 p=31742 u=zuul n=ansible | TASK [repo_setup : Run repo-setup-get-hash _raw_params={{ cifmw_repo_setup_venv }}/bin/repo-setup-get-hash --dlrn-url {{ cifmw_repo_setup_dlrn_uri[:-1] }} --os-version {{ cifmw_repo_setup_os_release }}{{ cifmw_repo_setup_dist_major_version }} --release {{ cifmw_repo_setup_branch }} {% if cifmw_repo_setup_component_name | length > 0 -%} --component {{ cifmw_repo_setup_component_name }} --tag {{ cifmw_repo_setup_component_promotion_tag }} {% else -%} --tag {{cifmw_repo_setup_promotion }} {% endif -%} {% if (cifmw_repo_setup_dlrn_hash_tag | length > 0) and (cifmw_repo_setup_component_name | length <= 0) -%} --dlrn-hash-tag {{ cifmw_repo_setup_dlrn_hash_tag }} {% endif -%} --json] *** 2026-03-20 15:49:39,683 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.033) 0:00:15.308 ********** 2026-03-20 15:49:39,683 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:39 +0000 (0:00:00.033) 0:00:15.307 ********** 2026-03-20 15:49:40,139 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:40,148 p=31742 u=zuul n=ansible | TASK [repo_setup : Dump full hash in delorean.repo.md5 file content={{ _repo_setup_json['full_hash'] }} , dest={{ cifmw_repo_setup_basedir }}/artifacts/repositories/delorean.repo.md5, mode=0644] *** 2026-03-20 15:49:40,148 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.465) 0:00:15.773 ********** 2026-03-20 15:49:40,148 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.465) 0:00:15.772 ********** 2026-03-20 15:49:40,956 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:40,963 p=31742 u=zuul n=ansible | TASK [repo_setup : Dump current-podified hash url={{ cifmw_repo_setup_dlrn_uri }}/{{ cifmw_repo_setup_os_release }}{{ cifmw_repo_setup_dist_major_version }}-{{ cifmw_repo_setup_branch }}/current-podified/delorean.repo.md5, dest={{ cifmw_repo_setup_basedir }}/artifacts/repositories/delorean.repo.md5, mode=0644] *** 2026-03-20 15:49:40,963 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.814) 0:00:16.588 ********** 2026-03-20 15:49:40,963 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.814) 0:00:16.587 ********** 2026-03-20 15:49:40,977 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:40,982 p=31742 u=zuul n=ansible | TASK [repo_setup : Slurp current podified hash src={{ cifmw_repo_setup_basedir }}/artifacts/repositories/delorean.repo.md5] *** 2026-03-20 15:49:40,982 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.019) 0:00:16.607 ********** 2026-03-20 15:49:40,982 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:40 +0000 (0:00:00.019) 0:00:16.606 ********** 2026-03-20 15:49:40,997 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,003 p=31742 u=zuul n=ansible | TASK [repo_setup : Update the value of full_hash _repo_setup_json={{ _repo_setup_json | combine({'full_hash': _hash}, recursive=true) }}] *** 2026-03-20 15:49:41,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.628 ********** 2026-03-20 15:49:41,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.627 ********** 2026-03-20 15:49:41,016 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,023 p=31742 u=zuul n=ansible | TASK [repo_setup : Export hashes facts for further use cifmw_repo_setup_full_hash={{ _repo_setup_json['full_hash'] }}, cifmw_repo_setup_commit_hash={{ _repo_setup_json['commit_hash'] }}, cifmw_repo_setup_distro_hash={{ _repo_setup_json['distro_hash'] }}, cifmw_repo_setup_extended_hash={{ _repo_setup_json['extended_hash'] }}, cifmw_repo_setup_dlrn_api_url={{ _repo_setup_json['dlrn_api_url'] }}, cifmw_repo_setup_dlrn_url={{ _repo_setup_json['dlrn_url'] }}, cifmw_repo_setup_release={{ _repo_setup_json['release'] }}, cacheable=True] *** 2026-03-20 15:49:41,023 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.648 ********** 2026-03-20 15:49:41,023 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.647 ********** 2026-03-20 15:49:41,047 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:41,054 p=31742 u=zuul n=ansible | TASK [repo_setup : Create download directory path={{ cifmw_repo_setup_rhos_release_path }}, state=directory, mode=0755] *** 2026-03-20 15:49:41,054 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.030) 0:00:16.679 ********** 2026-03-20 15:49:41,054 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.030) 0:00:16.678 ********** 2026-03-20 15:49:41,065 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,072 p=31742 u=zuul n=ansible | TASK [repo_setup : Print the URL to request msg={{ cifmw_repo_setup_rhos_release_rpm }}] *** 2026-03-20 15:49:41,072 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.017) 0:00:16.697 ********** 2026-03-20 15:49:41,072 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.017) 0:00:16.696 ********** 2026-03-20 15:49:41,084 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,092 p=31742 u=zuul n=ansible | TASK [Download the RPM name=krb_request] *************************************** 2026-03-20 15:49:41,092 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.717 ********** 2026-03-20 15:49:41,092 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.020) 0:00:16.716 ********** 2026-03-20 15:49:41,106 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,114 p=31742 u=zuul n=ansible | TASK [repo_setup : Install RHOS Release tool name={{ cifmw_repo_setup_rhos_release_rpm if cifmw_repo_setup_rhos_release_rpm is not url else cifmw_krb_request_out.path }}, state=present, disable_gpg_check={{ cifmw_repo_setup_rhos_release_gpg_check | bool }}] *** 2026-03-20 15:49:41,114 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.022) 0:00:16.739 ********** 2026-03-20 15:49:41,114 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.022) 0:00:16.738 ********** 2026-03-20 15:49:41,126 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,134 p=31742 u=zuul n=ansible | TASK [repo_setup : Get rhos-release tool version _raw_params=rhos-release --version] *** 2026-03-20 15:49:41,134 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.019) 0:00:16.759 ********** 2026-03-20 15:49:41,134 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.019) 0:00:16.758 ********** 2026-03-20 15:49:41,147 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,153 p=31742 u=zuul n=ansible | TASK [repo_setup : Print rhos-release tool version msg={{ rr_version.stdout }}] *** 2026-03-20 15:49:41,153 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.019) 0:00:16.778 ********** 2026-03-20 15:49:41,153 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.019) 0:00:16.777 ********** 2026-03-20 15:49:41,167 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,176 p=31742 u=zuul n=ansible | TASK [repo_setup : Generate repos using rhos-release {{ cifmw_repo_setup_rhos_release_args }} _raw_params=rhos-release {{ cifmw_repo_setup_rhos_release_args }} \ -t {{ cifmw_repo_setup_output }}] *** 2026-03-20 15:49:41,176 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.022) 0:00:16.801 ********** 2026-03-20 15:49:41,176 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.022) 0:00:16.800 ********** 2026-03-20 15:49:41,186 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:41,191 p=31742 u=zuul n=ansible | TASK [repo_setup : Check for /etc/ci/mirror_info.sh path=/etc/ci/mirror_info.sh] *** 2026-03-20 15:49:41,191 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.015) 0:00:16.816 ********** 2026-03-20 15:49:41,191 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.015) 0:00:16.815 ********** 2026-03-20 15:49:41,423 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:41,429 p=31742 u=zuul n=ansible | TASK [repo_setup : Use RDO proxy mirrors chdir={{ cifmw_repo_setup_output }}, _raw_params=set -o pipefail source /etc/ci/mirror_info.sh sed -i -e "s|https://trunk.rdoproject.org|$NODEPOOL_RDO_PROXY|g" *.repo ] *** 2026-03-20 15:49:41,430 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.238) 0:00:17.055 ********** 2026-03-20 15:49:41,430 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.238) 0:00:17.053 ********** 2026-03-20 15:49:41,650 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:41,656 p=31742 u=zuul n=ansible | TASK [repo_setup : Use RDO CentOS mirrors (remove CentOS 10 conditional when Nodepool mirrors exist) chdir={{ cifmw_repo_setup_output }}, _raw_params=set -o pipefail source /etc/ci/mirror_info.sh sed -i -e "s|http://mirror.stream.centos.org|$NODEPOOL_CENTOS_MIRROR|g" *.repo ] *** 2026-03-20 15:49:41,656 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.226) 0:00:17.281 ********** 2026-03-20 15:49:41,656 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.226) 0:00:17.280 ********** 2026-03-20 15:49:41,896 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:41,903 p=31742 u=zuul n=ansible | TASK [repo_setup : Check for gating.repo file on content provider url=http://{{ content_provider_registry_ip }}:8766/gating.repo] *** 2026-03-20 15:49:41,904 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.247) 0:00:17.529 ********** 2026-03-20 15:49:41,904 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:41 +0000 (0:00:00.247) 0:00:17.527 ********** 2026-03-20 15:49:42,497 p=31742 u=zuul n=ansible | fatal: [controller]: FAILED! => changed: false elapsed: 0 msg: 'Status code was -1 and not [200]: Request failed: ' redirected: false status: -1 url: http://38.102.83.147:8766/gating.repo 2026-03-20 15:49:42,497 p=31742 u=zuul n=ansible | ...ignoring 2026-03-20 15:49:42,503 p=31742 u=zuul n=ansible | TASK [repo_setup : Populate gating repo from content provider ip content=[gating-repo] baseurl=http://{{ content_provider_registry_ip }}:8766/ enabled=1 gpgcheck=0 priority=1 , dest={{ cifmw_repo_setup_output }}/gating.repo, mode=0644] *** 2026-03-20 15:49:42,503 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.599) 0:00:18.128 ********** 2026-03-20 15:49:42,503 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.599) 0:00:18.127 ********** 2026-03-20 15:49:42,534 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:42,539 p=31742 u=zuul n=ansible | TASK [repo_setup : Check for DLRN repo at the destination path={{ cifmw_repo_setup_output }}/delorean.repo] *** 2026-03-20 15:49:42,540 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.036) 0:00:18.165 ********** 2026-03-20 15:49:42,540 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.036) 0:00:18.163 ********** 2026-03-20 15:49:42,572 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:42,579 p=31742 u=zuul n=ansible | TASK [repo_setup : Lower the priority of DLRN repos to allow installation from gating repo path={{ cifmw_repo_setup_output }}/delorean.repo, regexp=priority=1, replace=priority=20] *** 2026-03-20 15:49:42,579 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.039) 0:00:18.204 ********** 2026-03-20 15:49:42,579 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.039) 0:00:18.203 ********** 2026-03-20 15:49:42,607 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:42,614 p=31742 u=zuul n=ansible | TASK [repo_setup : Check for DLRN component repo path={{ cifmw_repo_setup_output }}/{{ _comp_repo }}] *** 2026-03-20 15:49:42,615 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.035) 0:00:18.240 ********** 2026-03-20 15:49:42,615 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.035) 0:00:18.238 ********** 2026-03-20 15:49:42,648 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:42,656 p=31742 u=zuul n=ansible | TASK [repo_setup : Lower the priority of component repos to allow installation from gating repo path={{ cifmw_repo_setup_output }}/{{ _comp_repo }}, regexp=priority=1, replace=priority=2] *** 2026-03-20 15:49:42,656 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.041) 0:00:18.281 ********** 2026-03-20 15:49:42,656 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.041) 0:00:18.280 ********** 2026-03-20 15:49:42,685 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:49:42,691 p=31742 u=zuul n=ansible | TASK [repo_setup : Find existing repos from /etc/yum.repos.d directory paths=/etc/yum.repos.d/, patterns=*.repo, recurse=False] *** 2026-03-20 15:49:42,691 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.035) 0:00:18.316 ********** 2026-03-20 15:49:42,691 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:42 +0000 (0:00:00.035) 0:00:18.315 ********** 2026-03-20 15:49:43,045 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:49:43,051 p=31742 u=zuul n=ansible | TASK [repo_setup : Remove existing repos from /etc/yum.repos.d directory path={{ item }}, state=absent] *** 2026-03-20 15:49:43,051 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.359) 0:00:18.676 ********** 2026-03-20 15:49:43,051 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.359) 0:00:18.675 ********** 2026-03-20 15:49:43,266 p=31742 u=zuul n=ansible | changed: [controller] => (item=/etc/yum.repos.d/centos-addons.repo) 2026-03-20 15:49:43,502 p=31742 u=zuul n=ansible | changed: [controller] => (item=/etc/yum.repos.d/centos.repo) 2026-03-20 15:49:43,516 p=31742 u=zuul n=ansible | TASK [repo_setup : Cleanup existing metadata _raw_params=dnf clean metadata] *** 2026-03-20 15:49:43,516 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.465) 0:00:19.141 ********** 2026-03-20 15:49:43,516 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.465) 0:00:19.140 ********** 2026-03-20 15:49:43,948 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:43,954 p=31742 u=zuul n=ansible | TASK [repo_setup : Copy generated repos to /etc/yum.repos.d directory mode=0755, remote_src=True, src={{ cifmw_repo_setup_output }}/, dest=/etc/yum.repos.d] *** 2026-03-20 15:49:43,954 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.438) 0:00:19.579 ********** 2026-03-20 15:49:43,954 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:43 +0000 (0:00:00.438) 0:00:19.578 ********** 2026-03-20 15:49:44,277 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:49:44,287 p=31742 u=zuul n=ansible | TASK [ci_setup : Gather variables for each operating system _raw_params={{ item }}] *** 2026-03-20 15:49:44,287 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.333) 0:00:19.912 ********** 2026-03-20 15:49:44,287 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.333) 0:00:19.911 ********** 2026-03-20 15:49:44,329 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_setup/vars/redhat.yml) 2026-03-20 15:49:44,338 p=31742 u=zuul n=ansible | TASK [ci_setup : List packages to install var=cifmw_ci_setup_packages] ********* 2026-03-20 15:49:44,338 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.050) 0:00:19.963 ********** 2026-03-20 15:49:44,338 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.050) 0:00:19.962 ********** 2026-03-20 15:49:44,355 p=31742 u=zuul n=ansible | ok: [controller] => cifmw_ci_setup_packages: - bash-completion - ca-certificates - git-core - make - tar - tmux - python3-pip 2026-03-20 15:49:44,363 p=31742 u=zuul n=ansible | TASK [ci_setup : Install needed packages name={{ cifmw_ci_setup_packages }}, state=latest] *** 2026-03-20 15:49:44,364 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.025) 0:00:19.989 ********** 2026-03-20 15:49:44,364 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:49:44 +0000 (0:00:00.025) 0:00:19.987 ********** 2026-03-20 15:50:17,266 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:17,274 p=31742 u=zuul n=ansible | TASK [ci_setup : Gather version of openshift client _raw_params=oc version --client -o yaml] *** 2026-03-20 15:50:17,275 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:32.911) 0:00:52.900 ********** 2026-03-20 15:50:17,275 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:32.911) 0:00:52.898 ********** 2026-03-20 15:50:17,507 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:17,513 p=31742 u=zuul n=ansible | TASK [ci_setup : Ensure openshift client install path is present path={{ cifmw_ci_setup_oc_install_path }}, state=directory, mode=0755] *** 2026-03-20 15:50:17,513 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:00.238) 0:00:53.138 ********** 2026-03-20 15:50:17,513 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:00.238) 0:00:53.137 ********** 2026-03-20 15:50:17,737 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:17,744 p=31742 u=zuul n=ansible | TASK [ci_setup : Install openshift client src={{ cifmw_ci_setup_openshift_client_download_uri }}/{{ cifmw_ci_setup_openshift_client_version }}/openshift-client-linux.tar.gz, dest={{ cifmw_ci_setup_oc_install_path }}, remote_src=True, mode=0755, creates={{ cifmw_ci_setup_oc_install_path }}/oc] *** 2026-03-20 15:50:17,744 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:00.230) 0:00:53.369 ********** 2026-03-20 15:50:17,744 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:17 +0000 (0:00:00.230) 0:00:53.368 ********** 2026-03-20 15:50:22,146 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:22,153 p=31742 u=zuul n=ansible | TASK [ci_setup : Add the OC path to cifmw_path if needed cifmw_path={{ cifmw_ci_setup_oc_install_path }}:{{ ansible_env.PATH }}, cacheable=True] *** 2026-03-20 15:50:22,153 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:04.409) 0:00:57.778 ********** 2026-03-20 15:50:22,153 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:04.409) 0:00:57.777 ********** 2026-03-20 15:50:22,172 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,178 p=31742 u=zuul n=ansible | TASK [ci_setup : Create completion file] *************************************** 2026-03-20 15:50:22,179 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.025) 0:00:57.804 ********** 2026-03-20 15:50:22,179 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.025) 0:00:57.802 ********** 2026-03-20 15:50:22,482 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:22,488 p=31742 u=zuul n=ansible | TASK [ci_setup : Source completion from within .bashrc create=True, mode=0644, path={{ ansible_user_dir }}/.bashrc, block=if [ -f ~/.oc_completion ]; then source ~/.oc_completion fi] *** 2026-03-20 15:50:22,488 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.309) 0:00:58.113 ********** 2026-03-20 15:50:22,488 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.309) 0:00:58.112 ********** 2026-03-20 15:50:22,779 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:22,786 p=31742 u=zuul n=ansible | TASK [ci_setup : Check rhsm status _raw_params=subscription-manager status] **** 2026-03-20 15:50:22,786 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.298) 0:00:58.411 ********** 2026-03-20 15:50:22,786 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.298) 0:00:58.410 ********** 2026-03-20 15:50:22,798 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,805 p=31742 u=zuul n=ansible | TASK [ci_setup : Gather the repos to be enabled _repos={{ cifmw_ci_setup_rhel_rhsm_default_repos + (cifmw_ci_setup_rhel_rhsm_extra_repos | default([])) }}] *** 2026-03-20 15:50:22,805 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.018) 0:00:58.430 ********** 2026-03-20 15:50:22,805 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.018) 0:00:58.429 ********** 2026-03-20 15:50:22,817 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,824 p=31742 u=zuul n=ansible | TASK [ci_setup : Enabling the required repositories. name={{ item }}, state={{ rhsm_repo_state | default('enabled') }}] *** 2026-03-20 15:50:22,825 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.450 ********** 2026-03-20 15:50:22,825 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.449 ********** 2026-03-20 15:50:22,837 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,844 p=31742 u=zuul n=ansible | TASK [ci_setup : Get current /etc/redhat-release _raw_params=cat /etc/redhat-release] *** 2026-03-20 15:50:22,844 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.469 ********** 2026-03-20 15:50:22,844 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.468 ********** 2026-03-20 15:50:22,856 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,865 p=31742 u=zuul n=ansible | TASK [ci_setup : Print current /etc/redhat-release msg={{ _current_rh_release.stdout }}] *** 2026-03-20 15:50:22,865 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.020) 0:00:58.490 ********** 2026-03-20 15:50:22,865 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.020) 0:00:58.489 ********** 2026-03-20 15:50:22,877 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,884 p=31742 u=zuul n=ansible | TASK [ci_setup : Ensure the repos are enabled in the system using yum name={{ item.name }}, baseurl={{ item.baseurl }}, description={{ item.description | default(item.name) }}, gpgcheck={{ item.gpgcheck | default(false) }}, enabled=True, state={{ yum_repo_state | default('present') }}] *** 2026-03-20 15:50:22,884 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.509 ********** 2026-03-20 15:50:22,884 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.019) 0:00:58.508 ********** 2026-03-20 15:50:22,903 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:22,908 p=31742 u=zuul n=ansible | TASK [ci_setup : Manage directories path={{ item }}, state={{ directory_state }}, mode=0755, owner={{ ansible_user_id }}, group={{ ansible_user_id }}] *** 2026-03-20 15:50:22,909 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.024) 0:00:58.534 ********** 2026-03-20 15:50:22,909 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:22 +0000 (0:00:00.024) 0:00:58.532 ********** 2026-03-20 15:50:23,154 p=31742 u=zuul n=ansible | changed: [controller] => (item=/home/zuul/ci-framework-data/artifacts/manifests/openstack/cr) 2026-03-20 15:50:23,364 p=31742 u=zuul n=ansible | changed: [controller] => (item=/home/zuul/ci-framework-data/logs) 2026-03-20 15:50:23,567 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/ci-framework-data/tmp) 2026-03-20 15:50:23,770 p=31742 u=zuul n=ansible | changed: [controller] => (item=/home/zuul/ci-framework-data/volumes) 2026-03-20 15:50:23,959 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/ci-framework-data/artifacts/parameters) 2026-03-20 15:50:23,970 p=31742 u=zuul n=ansible | TASK [Prepare install_yamls make targets name=install_yamls, apply={'tags': ['bootstrap']}] *** 2026-03-20 15:50:23,970 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:23 +0000 (0:00:01.061) 0:00:59.595 ********** 2026-03-20 15:50:23,970 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:23 +0000 (0:00:01.061) 0:00:59.594 ********** 2026-03-20 15:50:24,095 p=31742 u=zuul n=ansible | TASK [install_yamls : Ensure directories exist path={{ item }}, state=directory, mode=0755] *** 2026-03-20 15:50:24,095 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.125) 0:00:59.720 ********** 2026-03-20 15:50:24,095 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.125) 0:00:59.719 ********** 2026-03-20 15:50:24,311 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/ci-framework-data/artifacts) 2026-03-20 15:50:24,562 p=31742 u=zuul n=ansible | changed: [controller] => (item=/home/zuul/ci-framework-data/artifacts/roles/install_yamls_makes/tasks) 2026-03-20 15:50:24,759 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/ci-framework-data/artifacts/parameters) 2026-03-20 15:50:24,768 p=31742 u=zuul n=ansible | TASK [Create variables with local repos based on Zuul items name=install_yamls, tasks_from=zuul_set_operators_repo.yml] *** 2026-03-20 15:50:24,768 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.672) 0:01:00.393 ********** 2026-03-20 15:50:24,768 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.672) 0:01:00.392 ********** 2026-03-20 15:50:24,816 p=31742 u=zuul n=ansible | TASK [install_yamls : Set fact with local repos based on Zuul items cifmw_install_yamls_operators_repo={{ cifmw_install_yamls_operators_repo | default({}) | combine(_repo_operator_info | items2dict) }}] *** 2026-03-20 15:50:24,817 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.048) 0:01:00.442 ********** 2026-03-20 15:50:24,817 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.048) 0:01:00.440 ********** 2026-03-20 15:50:24,869 p=31742 u=zuul n=ansible | ok: [controller] => (item={'branch': 'main', 'change': '354', 'change_url': 'https://github.com/openstack-k8s-operators/watcher-operator/pull/354', 'commit_id': 'ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'patchset': 'ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'project': {'canonical_hostname': 'github.com', 'canonical_name': 'github.com/openstack-k8s-operators/watcher-operator', 'name': 'openstack-k8s-operators/watcher-operator', 'short_name': 'watcher-operator', 'src_dir': 'src/github.com/openstack-k8s-operators/watcher-operator'}, 'topic': None}) 2026-03-20 15:50:24,884 p=31742 u=zuul n=ansible | TASK [install_yamls : Print helpful data for debugging msg=_repo_operator_name: {{ _repo_operator_name }} _repo_operator_info: {{ _repo_operator_info }} cifmw_install_yamls_operators_repo: {{ cifmw_install_yamls_operators_repo }} ] *** 2026-03-20 15:50:24,885 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.068) 0:01:00.510 ********** 2026-03-20 15:50:24,885 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.068) 0:01:00.509 ********** 2026-03-20 15:50:24,927 p=31742 u=zuul n=ansible | ok: [controller] => (item={'branch': 'main', 'change': '354', 'change_url': 'https://github.com/openstack-k8s-operators/watcher-operator/pull/354', 'commit_id': 'ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'patchset': 'ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'project': {'canonical_hostname': 'github.com', 'canonical_name': 'github.com/openstack-k8s-operators/watcher-operator', 'name': 'openstack-k8s-operators/watcher-operator', 'short_name': 'watcher-operator', 'src_dir': 'src/github.com/openstack-k8s-operators/watcher-operator'}, 'topic': None}) => msg: | _repo_operator_name: watcher _repo_operator_info: [{'key': 'WATCHER_REPO', 'value': '/home/zuul/src/github.com/openstack-k8s-operators/watcher-operator'}, {'key': 'WATCHER_BRANCH', 'value': ''}] cifmw_install_yamls_operators_repo: {'WATCHER_REPO': '/home/zuul/src/github.com/openstack-k8s-operators/watcher-operator', 'WATCHER_BRANCH': ''} 2026-03-20 15:50:24,937 p=31742 u=zuul n=ansible | TASK [Customize install_yamls devsetup vars if needed name=install_yamls, tasks_from=customize_devsetup_vars.yml] *** 2026-03-20 15:50:24,937 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.052) 0:01:00.562 ********** 2026-03-20 15:50:24,937 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.052) 0:01:00.561 ********** 2026-03-20 15:50:24,971 p=31742 u=zuul n=ansible | TASK [install_yamls : Update opm_version in install_yamls devsetup/vars/default.yaml path={{ cifmw_install_yamls_repo }}/devsetup/vars/default.yaml, regexp=^opm_version:, line=opm_version: {{ cifmw_install_yamls_opm_version }}, state=present] *** 2026-03-20 15:50:24,971 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.034) 0:01:00.596 ********** 2026-03-20 15:50:24,971 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.034) 0:01:00.595 ********** 2026-03-20 15:50:24,985 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:24,991 p=31742 u=zuul n=ansible | TASK [install_yamls : Update sdk_version in install_yamls devsetup/vars/default.yaml path={{ cifmw_install_yamls_repo }}/devsetup/vars/default.yaml, regexp=^sdk_version:, line=sdk_version: {{ cifmw_install_yamls_sdk_version }}, state=present] *** 2026-03-20 15:50:24,991 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.020) 0:01:00.616 ********** 2026-03-20 15:50:24,991 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:24 +0000 (0:00:00.020) 0:01:00.615 ********** 2026-03-20 15:50:25,005 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:25,012 p=31742 u=zuul n=ansible | TASK [install_yamls : Update go_version in install_yamls devsetup/vars/default.yaml path={{ cifmw_install_yamls_repo }}/devsetup/vars/default.yaml, regexp=^go_version:, line=go_version: {{ cifmw_install_yamls_go_version }}, state=present] *** 2026-03-20 15:50:25,012 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.020) 0:01:00.637 ********** 2026-03-20 15:50:25,012 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.020) 0:01:00.636 ********** 2026-03-20 15:50:25,026 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:25,032 p=31742 u=zuul n=ansible | TASK [install_yamls : Update kustomize_version in install_yamls devsetup/vars/default.yaml path={{ cifmw_install_yamls_repo }}/devsetup/vars/default.yaml, regexp=^kustomize_version:, line=kustomize_version: {{ cifmw_install_yamls_kustomize_version }}, state=present] *** 2026-03-20 15:50:25,032 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.020) 0:01:00.657 ********** 2026-03-20 15:50:25,032 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.020) 0:01:00.656 ********** 2026-03-20 15:50:25,045 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:25,055 p=31742 u=zuul n=ansible | TASK [install_yamls : Compute the cifmw_install_yamls_vars final value _install_yamls_override_vars={{ _install_yamls_override_vars | default({}) | combine(item, recursive=True) }}] *** 2026-03-20 15:50:25,056 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.023) 0:01:00.681 ********** 2026-03-20 15:50:25,056 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.023) 0:01:00.679 ********** 2026-03-20 15:50:25,155 p=31742 u=zuul n=ansible | ok: [controller] => (item={'BMO_SETUP': False}) 2026-03-20 15:50:25,163 p=31742 u=zuul n=ansible | TASK [install_yamls : Set environment override cifmw_install_yamls_environment fact cifmw_install_yamls_environment={{ _install_yamls_override_vars.keys() | map('upper') | zip(_install_yamls_override_vars.values()) | items2dict(key_name=0, value_name=1) | combine({ 'OUT': cifmw_install_yamls_manifests_dir, 'OUTPUT_DIR': cifmw_install_yamls_edpm_dir, 'CHECKOUT_FROM_OPENSTACK_REF': cifmw_install_yamls_checkout_openstack_ref, 'OPENSTACK_K8S_BRANCH': (zuul is defined and not zuul.branch |regex_search('master|antelope|rhos')) | ternary(zuul.branch, 'main') }) | combine(install_yamls_operators_repos) }}, cacheable=True] *** 2026-03-20 15:50:25,163 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.107) 0:01:00.788 ********** 2026-03-20 15:50:25,163 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.107) 0:01:00.787 ********** 2026-03-20 15:50:25,199 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:25,206 p=31742 u=zuul n=ansible | TASK [install_yamls : Get environment structure base_path={{ cifmw_install_yamls_repo }}] *** 2026-03-20 15:50:25,206 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.043) 0:01:00.831 ********** 2026-03-20 15:50:25,206 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.043) 0:01:00.830 ********** 2026-03-20 15:50:25,826 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:25,836 p=31742 u=zuul n=ansible | TASK [install_yamls : Ensure Output directory exists path={{ cifmw_install_yamls_out_dir }}, state=directory, mode=0755] *** 2026-03-20 15:50:25,836 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.629) 0:01:01.461 ********** 2026-03-20 15:50:25,836 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:25 +0000 (0:00:00.629) 0:01:01.460 ********** 2026-03-20 15:50:26,103 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:26,111 p=31742 u=zuul n=ansible | TASK [install_yamls : Ensure user cifmw_install_yamls_vars contains existing Makefile variables that=_cifmw_install_yamls_unmatched_vars | length == 0, msg=cifmw_install_yamls_vars contains a variable that is not defined in install_yamls Makefile nor cifmw_install_yamls_whitelisted_vars: {{ _cifmw_install_yamls_unmatched_vars | join(', ')}}, quiet=True] *** 2026-03-20 15:50:26,112 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.275) 0:01:01.737 ********** 2026-03-20 15:50:26,112 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.275) 0:01:01.736 ********** 2026-03-20 15:50:26,143 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:26,158 p=31742 u=zuul n=ansible | TASK [install_yamls : Generate /home/zuul/ci-framework-data/artifacts/install_yamls.sh dest={{ cifmw_install_yamls_out_dir }}/{{ cifmw_install_yamls_envfile }}, content={% for k,v in cifmw_install_yamls_environment.items() %} export {{ k }}={{ v }} {% endfor %}, mode=0644] *** 2026-03-20 15:50:26,159 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.046) 0:01:01.784 ********** 2026-03-20 15:50:26,159 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.046) 0:01:01.783 ********** 2026-03-20 15:50:26,832 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:26,841 p=31742 u=zuul n=ansible | TASK [install_yamls : Set install_yamls default values cifmw_install_yamls_defaults={{ get_makefiles_env_output.makefiles_values | combine(cifmw_install_yamls_environment) }}, cacheable=True] *** 2026-03-20 15:50:26,841 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.682) 0:01:02.466 ********** 2026-03-20 15:50:26,841 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.682) 0:01:02.465 ********** 2026-03-20 15:50:26,863 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:26,870 p=31742 u=zuul n=ansible | TASK [install_yamls : Show the env structure var=cifmw_install_yamls_environment] *** 2026-03-20 15:50:26,870 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.029) 0:01:02.495 ********** 2026-03-20 15:50:26,870 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.029) 0:01:02.494 ********** 2026-03-20 15:50:26,885 p=31742 u=zuul n=ansible | ok: [controller] => cifmw_install_yamls_environment: BMO_SETUP: false CHECKOUT_FROM_OPENSTACK_REF: 'true' OPENSTACK_K8S_BRANCH: main OUT: /home/zuul/ci-framework-data/artifacts/manifests OUTPUT_DIR: /home/zuul/ci-framework-data/artifacts/edpm WATCHER_BRANCH: '' WATCHER_REPO: /home/zuul/src/github.com/openstack-k8s-operators/watcher-operator 2026-03-20 15:50:26,891 p=31742 u=zuul n=ansible | TASK [install_yamls : Show the env structure defaults var=cifmw_install_yamls_defaults] *** 2026-03-20 15:50:26,892 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.021) 0:01:02.517 ********** 2026-03-20 15:50:26,892 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.021) 0:01:02.515 ********** 2026-03-20 15:50:26,916 p=31742 u=zuul n=ansible | ok: [controller] => cifmw_install_yamls_defaults: ADOPTED_EXTERNAL_NETWORK: 172.21.1.0/24 ADOPTED_INTERNALAPI_NETWORK: 172.17.1.0/24 ADOPTED_STORAGEMGMT_NETWORK: 172.20.1.0/24 ADOPTED_STORAGE_NETWORK: 172.18.1.0/24 ADOPTED_TENANT_NETWORK: 172.9.1.0/24 BARBICAN: config/samples/barbican_v1beta1_barbican.yaml BARBICAN_BRANCH: main BARBICAN_COMMIT_HASH: '' BARBICAN_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator/config/samples/barbican_v1beta1_barbican.yaml BARBICAN_DEPL_IMG: unused BARBICAN_IMG: quay.io/openstack-k8s-operators/barbican-operator-index:latest BARBICAN_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator/kuttl-test.yaml BARBICAN_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator/test/kuttl/tests BARBICAN_KUTTL_NAMESPACE: barbican-kuttl-tests BARBICAN_REPO: https://github.com/openstack-k8s-operators/barbican-operator.git BARBICAN_SERVICE_ENABLED: 'true' BARBICAN_SIMPLE_CRYPTO_ENCRYPTION_KEY: sEFmdFjDUqRM2VemYslV5yGNWjokioJXsg8Nrlc3drU= BAREMETAL_BRANCH: main BAREMETAL_COMMIT_HASH: '' BAREMETAL_IMG: quay.io/openstack-k8s-operators/openstack-baremetal-operator-index:latest BAREMETAL_OS_CONTAINER_IMG: '' BAREMETAL_OS_IMG: '' BAREMETAL_OS_IMG_TYPE: '' BAREMETAL_REPO: https://github.com/openstack-k8s-operators/openstack-baremetal-operator.git BAREMETAL_TIMEOUT: 20m BASH_IMG: quay.io/openstack-k8s-operators/bash:latest BGP_ASN: '64999' BGP_LEAF_1: 100.65.4.1 BGP_LEAF_2: 100.64.4.1 BGP_OVN_ROUTING: 'false' BGP_PEER_ASN: '64999' BGP_SOURCE_IP: 172.30.4.2 BGP_SOURCE_IP6: f00d:f00d:f00d:f00d:f00d:f00d:f00d:42 BMAAS_BRIDGE_IPV4_PREFIX: 172.20.1.2/24 BMAAS_BRIDGE_IPV6_PREFIX: fd00:bbbb::2/64 BMAAS_INSTANCE_DISK_SIZE: '20' BMAAS_INSTANCE_MEMORY: '4096' BMAAS_INSTANCE_NAME_PREFIX: crc-bmaas BMAAS_INSTANCE_NET_MODEL: virtio BMAAS_INSTANCE_OS_VARIANT: centos-stream9 BMAAS_INSTANCE_VCPUS: '2' BMAAS_INSTANCE_VIRT_TYPE: kvm BMAAS_IPV4: 'true' BMAAS_IPV6: 'false' BMAAS_LIBVIRT_USER: sushyemu BMAAS_METALLB_ADDRESS_POOL: 172.20.1.64/26 BMAAS_METALLB_POOL_NAME: baremetal BMAAS_NETWORK_IPV4_PREFIX: 172.20.1.1/24 BMAAS_NETWORK_IPV6_PREFIX: fd00:bbbb::1/64 BMAAS_NETWORK_NAME: crc-bmaas BMAAS_NODE_COUNT: '1' BMAAS_OCP_INSTANCE_NAME: crc BMAAS_REDFISH_PASSWORD: password BMAAS_REDFISH_USERNAME: admin BMAAS_ROUTE_LIBVIRT_NETWORKS: crc-bmaas,crc,default BMAAS_SUSHY_EMULATOR_DRIVER: libvirt BMAAS_SUSHY_EMULATOR_IMAGE: quay.io/metal3-io/sushy-tools:latest BMAAS_SUSHY_EMULATOR_NAMESPACE: sushy-emulator BMAAS_SUSHY_EMULATOR_OS_CLIENT_CONFIG_FILE: /etc/openstack/clouds.yaml BMAAS_SUSHY_EMULATOR_OS_CLOUD: openstack BMH_NAMESPACE: openstack BMO_BRANCH: release-0.9 BMO_CLEANUP: 'true' BMO_COMMIT_HASH: '' BMO_IPA_BASEURI: https://tarballs.opendev.org/openstack/ironic-python-agent/dib BMO_IPA_BRANCH: stable/2024.1 BMO_IPA_FLAVOR: centos9 BMO_IPA_INSECURE: 'false' BMO_IRONIC_HOST: 192.168.122.10 BMO_PROVISIONING_INTERFACE: '' BMO_REPO: https://github.com/metal3-io/baremetal-operator BMO_SETUP: false BMO_SETUP_ROUTE_REPLACE: 'true' BM_CTLPLANE_INTERFACE: enp1s0 BM_INSTANCE_MEMORY: '8192' BM_INSTANCE_NAME_PREFIX: edpm-compute-baremetal BM_INSTANCE_NAME_SUFFIX: '0' BM_NETWORK_NAME: default BM_NODE_COUNT: '1' BM_ROOT_PASSWORD: '' BM_ROOT_PASSWORD_SECRET: '' CEILOMETER_CENTRAL_DEPL_IMG: unused CEILOMETER_NOTIFICATION_DEPL_IMG: unused CEPH_BRANCH: release-1.15 CEPH_CLIENT: /home/zuul/ci-framework-data/artifacts/manifests/operator/rook/deploy/examples/toolbox.yaml CEPH_COMMON: /home/zuul/ci-framework-data/artifacts/manifests/operator/rook/deploy/examples/common.yaml CEPH_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/rook/deploy/examples/cluster-test.yaml CEPH_CRDS: /home/zuul/ci-framework-data/artifacts/manifests/operator/rook/deploy/examples/crds.yaml CEPH_IMG: quay.io/ceph/demo:latest-squid CEPH_OP: /home/zuul/ci-framework-data/artifacts/manifests/operator/rook/deploy/examples/operator-openshift.yaml CEPH_REPO: https://github.com/rook/rook.git CERTMANAGER_TIMEOUT: 300s CHECKOUT_FROM_OPENSTACK_REF: 'true' CINDER: config/samples/cinder_v1beta1_cinder.yaml CINDERAPI_DEPL_IMG: unused CINDERBKP_DEPL_IMG: unused CINDERSCH_DEPL_IMG: unused CINDERVOL_DEPL_IMG: unused CINDER_BRANCH: main CINDER_COMMIT_HASH: '' CINDER_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator/config/samples/cinder_v1beta1_cinder.yaml CINDER_IMG: quay.io/openstack-k8s-operators/cinder-operator-index:latest CINDER_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator/kuttl-test.yaml CINDER_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator/test/kuttl/tests CINDER_KUTTL_NAMESPACE: cinder-kuttl-tests CINDER_REPO: https://github.com/openstack-k8s-operators/cinder-operator.git CLEANUP_DIR_CMD: rm -Rf CRC_BGP_NIC_1_MAC: '52:54:00:11:11:11' CRC_BGP_NIC_2_MAC: '52:54:00:11:11:12' CRC_HTTPS_PROXY: '' CRC_HTTP_PROXY: '' CRC_STORAGE_NAMESPACE: crc-storage CRC_STORAGE_RETRIES: '3' CRC_URL: '''https://developers.redhat.com/content-gateway/rest/mirror/pub/openshift-v4/clients/crc/latest/crc-linux-amd64.tar.xz''' CRC_VERSION: latest DATAPLANE_ANSIBLE_SECRET: dataplane-ansible-ssh-private-key-secret DATAPLANE_ANSIBLE_USER: '' DATAPLANE_COMPUTE_IP: 192.168.122.100 DATAPLANE_CONTAINER_PREFIX: openstack DATAPLANE_CONTAINER_TAG: current-podified DATAPLANE_CUSTOM_SERVICE_RUNNER_IMG: quay.io/openstack-k8s-operators/openstack-ansibleee-runner:latest DATAPLANE_DEFAULT_GW: 192.168.122.1 DATAPLANE_EXTRA_NOVA_CONFIG_FILE: /dev/null DATAPLANE_GROWVOLS_ARGS: /=8GB /tmp=1GB /home=1GB /var=100% DATAPLANE_KUSTOMIZE_SCENARIO: preprovisioned DATAPLANE_NETWORKER_IP: 192.168.122.200 DATAPLANE_NETWORK_INTERFACE_NAME: eth0 DATAPLANE_NOVA_NFS_PATH: '' DATAPLANE_NTP_SERVER: pool.ntp.org DATAPLANE_PLAYBOOK: osp.edpm.download_cache DATAPLANE_REGISTRY_URL: quay.io/podified-antelope-centos9 DATAPLANE_RUNNER_IMG: '' DATAPLANE_SERVER_ROLE: compute DATAPLANE_SSHD_ALLOWED_RANGES: '[''192.168.122.0/24'']' DATAPLANE_TIMEOUT: 30m DATAPLANE_TLS_ENABLED: 'true' DATAPLANE_TOTAL_NETWORKER_NODES: '1' DATAPLANE_TOTAL_NODES: '1' DBSERVICE: galera DESIGNATE: config/samples/designate_v1beta1_designate.yaml DESIGNATE_BRANCH: main DESIGNATE_COMMIT_HASH: '' DESIGNATE_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator/config/samples/designate_v1beta1_designate.yaml DESIGNATE_IMG: quay.io/openstack-k8s-operators/designate-operator-index:latest DESIGNATE_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator/kuttl-test.yaml DESIGNATE_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator/test/kuttl/tests DESIGNATE_KUTTL_NAMESPACE: designate-kuttl-tests DESIGNATE_REPO: https://github.com/openstack-k8s-operators/designate-operator.git DNSDATA: config/samples/network_v1beta1_dnsdata.yaml DNSDATA_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/network_v1beta1_dnsdata.yaml DNSMASQ: config/samples/network_v1beta1_dnsmasq.yaml DNSMASQ_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/network_v1beta1_dnsmasq.yaml DNS_DEPL_IMG: unused DNS_DOMAIN: localdomain DOWNLOAD_TOOLS_SELECTION: all EDPM_ATTACH_EXTNET: 'true' EDPM_COMPUTE_ADDITIONAL_HOST_ROUTES: '''[]''' EDPM_COMPUTE_ADDITIONAL_NETWORKS: '''[]''' EDPM_COMPUTE_CELLS: '1' EDPM_COMPUTE_CEPH_ENABLED: 'true' EDPM_COMPUTE_CEPH_NOVA: 'true' EDPM_COMPUTE_DHCP_AGENT_ENABLED: 'true' EDPM_COMPUTE_SRIOV_ENABLED: 'true' EDPM_COMPUTE_SUFFIX: '0' EDPM_CONFIGURE_DEFAULT_ROUTE: 'true' EDPM_CONFIGURE_HUGEPAGES: 'false' EDPM_CONFIGURE_NETWORKING: 'true' EDPM_FIRSTBOOT_EXTRA: /tmp/edpm-firstboot-extra EDPM_NETWORKER_SUFFIX: '0' EDPM_TOTAL_NETWORKERS: '1' EDPM_TOTAL_NODES: '1' GALERA_REPLICAS: '' GENERATE_SSH_KEYS: 'true' GIT_CLONE_OPTS: '' GLANCE: config/samples/glance_v1beta1_glance.yaml GLANCEAPI_DEPL_IMG: unused GLANCE_BRANCH: main GLANCE_COMMIT_HASH: '' GLANCE_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator/config/samples/glance_v1beta1_glance.yaml GLANCE_IMG: quay.io/openstack-k8s-operators/glance-operator-index:latest GLANCE_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator/kuttl-test.yaml GLANCE_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator/test/kuttl/tests GLANCE_KUTTL_NAMESPACE: glance-kuttl-tests GLANCE_REPO: https://github.com/openstack-k8s-operators/glance-operator.git HEAT: config/samples/heat_v1beta1_heat.yaml HEATAPI_DEPL_IMG: unused HEATCFNAPI_DEPL_IMG: unused HEATENGINE_DEPL_IMG: unused HEAT_AUTH_ENCRYPTION_KEY: 767c3ed056cbaa3b9dfedb8c6f825bf0 HEAT_BRANCH: main HEAT_COMMIT_HASH: '' HEAT_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator/config/samples/heat_v1beta1_heat.yaml HEAT_IMG: quay.io/openstack-k8s-operators/heat-operator-index:latest HEAT_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator/kuttl-test.yaml HEAT_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator/test/kuttl/tests HEAT_KUTTL_NAMESPACE: heat-kuttl-tests HEAT_REPO: https://github.com/openstack-k8s-operators/heat-operator.git HEAT_SERVICE_ENABLED: 'true' HORIZON: config/samples/horizon_v1beta1_horizon.yaml HORIZON_BRANCH: main HORIZON_COMMIT_HASH: '' HORIZON_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator/config/samples/horizon_v1beta1_horizon.yaml HORIZON_DEPL_IMG: unused HORIZON_IMG: quay.io/openstack-k8s-operators/horizon-operator-index:latest HORIZON_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator/kuttl-test.yaml HORIZON_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator/test/kuttl/tests HORIZON_KUTTL_NAMESPACE: horizon-kuttl-tests HORIZON_REPO: https://github.com/openstack-k8s-operators/horizon-operator.git INFRA_BRANCH: main INFRA_COMMIT_HASH: '' INFRA_IMG: quay.io/openstack-k8s-operators/infra-operator-index:latest INFRA_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/kuttl-test.yaml INFRA_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/test/kuttl/tests INFRA_KUTTL_NAMESPACE: infra-kuttl-tests INFRA_REPO: https://github.com/openstack-k8s-operators/infra-operator.git INSTALL_CERT_MANAGER: 'true' INSTALL_NMSTATE: true || false INSTALL_NNCP: true || false INTERNALAPI_HOST_ROUTES: '' IPV6_LAB_IPV4_NETWORK_IPADDRESS: 172.30.0.1/24 IPV6_LAB_IPV6_NETWORK_IPADDRESS: fd00:abcd:abcd:fc00::1/64 IPV6_LAB_LIBVIRT_STORAGE_POOL: default IPV6_LAB_MANAGE_FIREWALLD: 'true' IPV6_LAB_NAT64_HOST_IPV4: 172.30.0.2/24 IPV6_LAB_NAT64_HOST_IPV6: fd00:abcd:abcd:fc00::2/64 IPV6_LAB_NAT64_INSTANCE_NAME: nat64-router IPV6_LAB_NAT64_IPV6_NETWORK: fd00:abcd:abcd:fc00::/64 IPV6_LAB_NAT64_TAYGA_DYNAMIC_POOL: 192.168.255.0/24 IPV6_LAB_NAT64_TAYGA_IPV4: 192.168.255.1 IPV6_LAB_NAT64_TAYGA_IPV6: fd00:abcd:abcd:fc00::3 IPV6_LAB_NAT64_TAYGA_IPV6_PREFIX: fd00:abcd:abcd:fcff::/96 IPV6_LAB_NAT64_UPDATE_PACKAGES: 'false' IPV6_LAB_NETWORK_NAME: nat64 IPV6_LAB_SNO_CLUSTER_NETWORK: fd00:abcd:0::/48 IPV6_LAB_SNO_HOST_IP: fd00:abcd:abcd:fc00::11 IPV6_LAB_SNO_HOST_PREFIX: '64' IPV6_LAB_SNO_INSTANCE_NAME: sno IPV6_LAB_SNO_MACHINE_NETWORK: fd00:abcd:abcd:fc00::/64 IPV6_LAB_SNO_OCP_MIRROR_URL: https://mirror.openshift.com/pub/openshift-v4/clients/ocp IPV6_LAB_SNO_OCP_VERSION: latest-4.14 IPV6_LAB_SNO_SERVICE_NETWORK: fd00:abcd:abcd:fc03::/112 IPV6_LAB_SSH_PUB_KEY: /home/zuul/.ssh/id_rsa.pub IPV6_LAB_WORK_DIR: /home/zuul/.ipv6lab IRONIC: config/samples/ironic_v1beta1_ironic.yaml IRONICAPI_DEPL_IMG: unused IRONICCON_DEPL_IMG: unused IRONICINS_DEPL_IMG: unused IRONICNAG_DEPL_IMG: unused IRONICPXE_DEPL_IMG: unused IRONIC_BRANCH: main IRONIC_COMMIT_HASH: '' IRONIC_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator/config/samples/ironic_v1beta1_ironic.yaml IRONIC_IMAGE: quay.io/metal3-io/ironic IRONIC_IMAGE_TAG: release-24.1 IRONIC_IMG: quay.io/openstack-k8s-operators/ironic-operator-index:latest IRONIC_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator/kuttl-test.yaml IRONIC_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator/test/kuttl/tests IRONIC_KUTTL_NAMESPACE: ironic-kuttl-tests IRONIC_REPO: https://github.com/openstack-k8s-operators/ironic-operator.git KEYSTONEAPI: config/samples/keystone_v1beta1_keystoneapi.yaml KEYSTONEAPI_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/config/samples/keystone_v1beta1_keystoneapi.yaml KEYSTONEAPI_DEPL_IMG: unused KEYSTONE_BRANCH: main KEYSTONE_COMMIT_HASH: '' KEYSTONE_FEDERATION_CLIENT_SECRET: COX8bmlKAWn56XCGMrKQJj7dgHNAOl6f KEYSTONE_FEDERATION_CRYPTO_PASSPHRASE: openstack KEYSTONE_IMG: quay.io/openstack-k8s-operators/keystone-operator-index:latest KEYSTONE_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/kuttl-test.yaml KEYSTONE_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests KEYSTONE_KUTTL_NAMESPACE: keystone-kuttl-tests KEYSTONE_REPO: https://github.com/openstack-k8s-operators/keystone-operator.git KUBEADMIN_PWD: '12345678' LIBVIRT_SECRET: libvirt-secret LOKI_DEPLOY_MODE: openshift-network LOKI_DEPLOY_NAMESPACE: netobserv LOKI_DEPLOY_SIZE: 1x.demo LOKI_NAMESPACE: openshift-operators-redhat LOKI_OPERATOR_GROUP: openshift-operators-redhat-loki LOKI_SUBSCRIPTION: loki-operator LVMS_CR: '1' MANILA: config/samples/manila_v1beta1_manila.yaml MANILAAPI_DEPL_IMG: unused MANILASCH_DEPL_IMG: unused MANILASHARE_DEPL_IMG: unused MANILA_BRANCH: main MANILA_COMMIT_HASH: '' MANILA_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator/config/samples/manila_v1beta1_manila.yaml MANILA_IMG: quay.io/openstack-k8s-operators/manila-operator-index:latest MANILA_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator/kuttl-test.yaml MANILA_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator/test/kuttl/tests MANILA_KUTTL_NAMESPACE: manila-kuttl-tests MANILA_REPO: https://github.com/openstack-k8s-operators/manila-operator.git MANILA_SERVICE_ENABLED: 'true' MARIADB: config/samples/mariadb_v1beta1_galera.yaml MARIADB_BRANCH: main MARIADB_CHAINSAW_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/test/chainsaw/config.yaml MARIADB_CHAINSAW_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/test/chainsaw/tests MARIADB_CHAINSAW_NAMESPACE: mariadb-chainsaw-tests MARIADB_COMMIT_HASH: '' MARIADB_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/config/samples/mariadb_v1beta1_galera.yaml MARIADB_DEPL_IMG: unused MARIADB_IMG: quay.io/openstack-k8s-operators/mariadb-operator-index:latest MARIADB_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/kuttl-test.yaml MARIADB_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/test/kuttl/tests MARIADB_KUTTL_NAMESPACE: mariadb-kuttl-tests MARIADB_REPO: https://github.com/openstack-k8s-operators/mariadb-operator.git MEMCACHED: config/samples/memcached_v1beta1_memcached.yaml MEMCACHED_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/memcached_v1beta1_memcached.yaml MEMCACHED_DEPL_IMG: unused METADATA_SHARED_SECRET: '1234567842' METALLB_IPV6_POOL: fd00:aaaa::80-fd00:aaaa::90 METALLB_POOL: 192.168.122.80-192.168.122.90 MICROSHIFT: '0' MIRROR_INSECURE: 'true' MIRROR_NAMESPACE: openstack-mirror MIRROR_REGISTRY_HOST: default-route-openshift-image-registry.apps-crc.testing NAMESPACE: openstack NETCONFIG: config/samples/network_v1beta1_netconfig.yaml NETCONFIG_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/network_v1beta1_netconfig.yaml NETCONFIG_DEPL_IMG: unused NETOBSERV_DEPLOY_NAMESPACE: netobserv NETOBSERV_NAMESPACE: openshift-netobserv-operator NETOBSERV_OPERATOR_GROUP: openshift-netobserv-operator-net NETOBSERV_SUBSCRIPTION: netobserv-operator NETWORK_BGP: 'false' NETWORK_DESIGNATE_ADDRESS_PREFIX: 172.28.0 NETWORK_DESIGNATE_EXT_ADDRESS_PREFIX: 172.50.0 NETWORK_INTERNALAPI_ADDRESS_PREFIX: 172.17.0 NETWORK_ISOLATION: 'true' NETWORK_ISOLATION_INSTANCE_NAME: crc NETWORK_ISOLATION_IPV4: 'true' NETWORK_ISOLATION_IPV4_ADDRESS: 172.16.1.1/24 NETWORK_ISOLATION_IPV4_NAT: 'true' NETWORK_ISOLATION_IPV6: 'false' NETWORK_ISOLATION_IPV6_ADDRESS: fd00:aaaa::1/64 NETWORK_ISOLATION_IP_ADDRESS: 192.168.122.10 NETWORK_ISOLATION_MAC: '52:54:00:11:11:10' NETWORK_ISOLATION_NETWORK_NAME: net-iso NETWORK_ISOLATION_NET_NAME: default NETWORK_ISOLATION_USE_DEFAULT_NETWORK: 'true' NETWORK_MTU: '1500' NETWORK_STORAGEMGMT_ADDRESS_PREFIX: 172.20.0 NETWORK_STORAGE_ADDRESS_PREFIX: 172.18.0 NETWORK_STORAGE_MACVLAN: '' NETWORK_TENANT_ADDRESS_PREFIX: 172.19.0 NETWORK_VLAN_START: '20' NETWORK_VLAN_STEP: '1' NEUTRONAPI: config/samples/neutron_v1beta1_neutronapi.yaml NEUTRONAPI_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator/config/samples/neutron_v1beta1_neutronapi.yaml NEUTRONAPI_DEPL_IMG: unused NEUTRON_BRANCH: main NEUTRON_COMMIT_HASH: '' NEUTRON_IMG: quay.io/openstack-k8s-operators/neutron-operator-index:latest NEUTRON_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator/kuttl-test.yaml NEUTRON_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator/test/kuttl/tests NEUTRON_KUTTL_NAMESPACE: neutron-kuttl-tests NEUTRON_REPO: https://github.com/openstack-k8s-operators/neutron-operator.git NFS_HOME: /home/nfs NMSTATE_NAMESPACE: openshift-nmstate NMSTATE_OPERATOR_GROUP: openshift-nmstate-tn6k8 NMSTATE_SUBSCRIPTION: kubernetes-nmstate-operator NNCP_ADDITIONAL_HOST_ROUTES: '' NNCP_BGP_1_INTERFACE: enp7s0 NNCP_BGP_1_IP_ADDRESS: 100.65.4.2 NNCP_BGP_2_INTERFACE: enp8s0 NNCP_BGP_2_IP_ADDRESS: 100.64.4.2 NNCP_BRIDGE: ospbr NNCP_CLEANUP_TIMEOUT: 120s NNCP_CTLPLANE_IPV6_ADDRESS_PREFIX: 'fd00:aaaa::' NNCP_CTLPLANE_IPV6_ADDRESS_SUFFIX: '10' NNCP_CTLPLANE_IP_ADDRESS_PREFIX: 192.168.122 NNCP_CTLPLANE_IP_ADDRESS_SUFFIX: '10' NNCP_DNS_SERVER: 192.168.122.1 NNCP_DNS_SERVER_IPV6: fd00:aaaa::1 NNCP_GATEWAY: 192.168.122.1 NNCP_GATEWAY_IPV6: fd00:aaaa::1 NNCP_INTERFACE: enp6s0 NNCP_NODES: '' NNCP_TIMEOUT: 240s NOVA: config/samples/nova_v1beta1_nova_collapsed_cell.yaml NOVA_BRANCH: main NOVA_COMMIT_HASH: '' NOVA_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/nova-operator/config/samples/nova_v1beta1_nova_collapsed_cell.yaml NOVA_IMG: quay.io/openstack-k8s-operators/nova-operator-index:latest NOVA_REPO: https://github.com/openstack-k8s-operators/nova-operator.git NUMBER_OF_INSTANCES: '1' OCP_NETWORK_NAME: crc OCTAVIA: config/samples/octavia_v1beta1_octavia.yaml OCTAVIA_BRANCH: main OCTAVIA_COMMIT_HASH: '' OCTAVIA_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator/config/samples/octavia_v1beta1_octavia.yaml OCTAVIA_IMG: quay.io/openstack-k8s-operators/octavia-operator-index:latest OCTAVIA_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator/kuttl-test.yaml OCTAVIA_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator/test/kuttl/tests OCTAVIA_KUTTL_NAMESPACE: octavia-kuttl-tests OCTAVIA_REPO: https://github.com/openstack-k8s-operators/octavia-operator.git OKD: 'false' OPENSTACK_BRANCH: main OPENSTACK_BUNDLE_IMG: quay.io/openstack-k8s-operators/openstack-operator-bundle:latest OPENSTACK_COMMIT_HASH: '' OPENSTACK_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/config/samples/core_v1beta1_openstackcontrolplane_galera_network_isolation.yaml OPENSTACK_CRDS_DIR: openstack_crds OPENSTACK_CTLPLANE: config/samples/core_v1beta1_openstackcontrolplane_galera_network_isolation.yaml OPENSTACK_IMG: quay.io/openstack-k8s-operators/openstack-operator-index:latest OPENSTACK_K8S_BRANCH: main OPENSTACK_K8S_TAG: latest OPENSTACK_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/kuttl-test.yaml OPENSTACK_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-operator/test/kuttl/tests OPENSTACK_KUTTL_NAMESPACE: openstack-kuttl-tests OPENSTACK_NEUTRON_CUSTOM_CONF: '' OPENSTACK_REPO: https://github.com/openstack-k8s-operators/openstack-operator.git OPENSTACK_STORAGE_BUNDLE_IMG: quay.io/openstack-k8s-operators/openstack-operator-storage-bundle:latest OPERATOR_BASE_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator OPERATOR_CHANNEL: '' OPERATOR_NAMESPACE: openstack-operators OPERATOR_SOURCE: '' OPERATOR_SOURCE_NAMESPACE: '' OUT: /home/zuul/ci-framework-data/artifacts/manifests OUTPUT_DIR: /home/zuul/ci-framework-data/artifacts/edpm OVNCONTROLLER: config/samples/ovn_v1beta1_ovncontroller.yaml OVNCONTROLLER_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator/config/samples/ovn_v1beta1_ovncontroller.yaml OVNCONTROLLER_NMAP: 'true' OVNDBS: config/samples/ovn_v1beta1_ovndbcluster.yaml OVNDBS_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator/config/samples/ovn_v1beta1_ovndbcluster.yaml OVNNORTHD: config/samples/ovn_v1beta1_ovnnorthd.yaml OVNNORTHD_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator/config/samples/ovn_v1beta1_ovnnorthd.yaml OVN_BRANCH: main OVN_COMMIT_HASH: '' OVN_IMG: quay.io/openstack-k8s-operators/ovn-operator-index:latest OVN_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator/kuttl-test.yaml OVN_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator/test/kuttl/tests OVN_KUTTL_NAMESPACE: ovn-kuttl-tests OVN_REPO: https://github.com/openstack-k8s-operators/ovn-operator.git PASSWORD: '12345678' PLACEMENTAPI: config/samples/placement_v1beta1_placementapi.yaml PLACEMENTAPI_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator/config/samples/placement_v1beta1_placementapi.yaml PLACEMENTAPI_DEPL_IMG: unused PLACEMENT_BRANCH: main PLACEMENT_COMMIT_HASH: '' PLACEMENT_IMG: quay.io/openstack-k8s-operators/placement-operator-index:latest PLACEMENT_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator/kuttl-test.yaml PLACEMENT_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator/test/kuttl/tests PLACEMENT_KUTTL_NAMESPACE: placement-kuttl-tests PLACEMENT_REPO: https://github.com/openstack-k8s-operators/placement-operator.git PULL_SECRET: /home/zuul/pull-secret.txt RABBITMQ: docs/examples/default-security-context/rabbitmq.yaml RABBITMQ_BRANCH: patches RABBITMQ_COMMIT_HASH: '' RABBITMQ_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator/docs/examples/default-security-context/rabbitmq.yaml RABBITMQ_DEPL_IMG: unused RABBITMQ_IMG: quay.io/openstack-k8s-operators/rabbitmq-cluster-operator-index:latest RABBITMQ_REPO: https://github.com/openstack-k8s-operators/rabbitmq-cluster-operator.git REDHAT_OPERATORS: 'false' REDIS: config/samples/redis_v1beta1_redis.yaml REDIS_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator-redis/config/samples/redis_v1beta1_redis.yaml REDIS_DEPL_IMG: unused RH_REGISTRY_PWD: '' RH_REGISTRY_USER: '' SECRET: osp-secret SG_CORE_DEPL_IMG: unused STANDALONE_COMPUTE_DRIVER: libvirt STANDALONE_EXTERNAL_NET_PREFFIX: 172.21.0 STANDALONE_INTERNALAPI_NET_PREFIX: 172.17.0 STANDALONE_STORAGEMGMT_NET_PREFIX: 172.20.0 STANDALONE_STORAGE_NET_PREFIX: 172.18.0 STANDALONE_TENANT_NET_PREFIX: 172.19.0 STORAGEMGMT_HOST_ROUTES: '' STORAGE_CLASS: local-storage STORAGE_HOST_ROUTES: '' SWIFT: config/samples/swift_v1beta1_swift.yaml SWIFT_BRANCH: main SWIFT_COMMIT_HASH: '' SWIFT_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator/config/samples/swift_v1beta1_swift.yaml SWIFT_IMG: quay.io/openstack-k8s-operators/swift-operator-index:latest SWIFT_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator/kuttl-test.yaml SWIFT_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator/test/kuttl/tests SWIFT_KUTTL_NAMESPACE: swift-kuttl-tests SWIFT_REPO: https://github.com/openstack-k8s-operators/swift-operator.git TELEMETRY: config/samples/telemetry_v1beta1_telemetry.yaml TELEMETRY_BRANCH: main TELEMETRY_COMMIT_HASH: '' TELEMETRY_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator/config/samples/telemetry_v1beta1_telemetry.yaml TELEMETRY_IMG: quay.io/openstack-k8s-operators/telemetry-operator-index:latest TELEMETRY_KUTTL_BASEDIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator TELEMETRY_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator/kuttl-test.yaml TELEMETRY_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator/test/kuttl/suites TELEMETRY_KUTTL_NAMESPACE: telemetry-kuttl-tests TELEMETRY_KUTTL_RELPATH: test/kuttl/suites TELEMETRY_REPO: https://github.com/openstack-k8s-operators/telemetry-operator.git TENANT_HOST_ROUTES: '' TIMEOUT: 300s TLS_ENABLED: 'false' WATCHER_BRANCH: '' WATCHER_REPO: /home/zuul/src/github.com/openstack-k8s-operators/watcher-operator tripleo_deploy: 'export REGISTRY_PWD:' 2026-03-20 15:50:26,925 p=31742 u=zuul n=ansible | TASK [install_yamls : Generate make targets install_yamls_path={{ cifmw_install_yamls_repo }}, output_directory={{ cifmw_install_yamls_tasks_out }}] *** 2026-03-20 15:50:26,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.033) 0:01:02.550 ********** 2026-03-20 15:50:26,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:26 +0000 (0:00:00.033) 0:01:02.549 ********** 2026-03-20 15:50:27,251 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:27,266 p=31742 u=zuul n=ansible | TASK [install_yamls : Debug generate_make module var=cifmw_generate_makes] ***** 2026-03-20 15:50:27,266 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.341) 0:01:02.891 ********** 2026-03-20 15:50:27,266 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.341) 0:01:02.890 ********** 2026-03-20 15:50:27,287 p=31742 u=zuul n=ansible | ok: [controller] => cifmw_generate_makes: changed: false debug: /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/Makefile: - all - help - cleanup - deploy_cleanup - wait - crc_storage - crc_storage_cleanup - crc_storage_release - crc_storage_with_retries - crc_storage_cleanup_with_retries - operator_namespace - namespace - namespace_cleanup - input - input_cleanup - crc_bmo_setup - crc_bmo_cleanup - mirror_registry - mirror_registry_secure - mirror_registry_ca - mirror_registry_cleanup - openstack_prep - openstack - openstack_wait - openstack_init - openstack_cleanup - openstack_repo - openstack_deploy_prep - openstack_deploy - openstack_wait_deploy - openstack_deploy_cleanup - openstack_update_run - update_services - update_system - openstack_patch_version - edpm_deploy_generate_keys - edpm_patch_ansible_runner_image - edpm_deploy_prep - edpm_deploy_cleanup - edpm_deploy - edpm_deploy_baremetal_prep - edpm_deploy_baremetal - edpm_wait_deploy_baremetal - edpm_wait_deploy - edpm_register_dns - edpm_nova_discover_hosts - openstack_crds - openstack_crds_cleanup - edpm_deploy_networker_prep - edpm_deploy_networker_cleanup - edpm_deploy_networker - infra_prep - infra - infra_cleanup - dns_deploy_prep - dns_deploy - dns_deploy_cleanup - netconfig_deploy_prep - netconfig_deploy - netconfig_deploy_cleanup - memcached_deploy_prep - memcached_deploy - memcached_deploy_cleanup - keystone_prep - keystone - keystone_cleanup - keystone_deploy_prep - keystone_deploy - keystone_deploy_cleanup - barbican_prep - barbican - barbican_cleanup - barbican_deploy_prep - barbican_deploy - barbican_deploy_validate - barbican_deploy_cleanup - mariadb - mariadb_cleanup - mariadb_deploy_prep - mariadb_deploy - mariadb_deploy_cleanup - placement_prep - placement - placement_cleanup - placement_deploy_prep - placement_deploy - placement_deploy_cleanup - glance_prep - glance - glance_cleanup - glance_deploy_prep - glance_deploy - glance_deploy_cleanup - ovn_prep - ovn - ovn_cleanup - ovn_deploy_prep - ovn_deploy - ovn_deploy_cleanup - neutron_prep - neutron - neutron_cleanup - neutron_deploy_prep - neutron_deploy - neutron_deploy_cleanup - cinder_prep - cinder - cinder_cleanup - cinder_deploy_prep - cinder_deploy - cinder_deploy_cleanup - rabbitmq_prep - rabbitmq - rabbitmq_cleanup - rabbitmq_deploy_prep - rabbitmq_deploy - rabbitmq_deploy_cleanup - ironic_prep - ironic - ironic_cleanup - ironic_deploy_prep - ironic_deploy - ironic_deploy_cleanup - octavia_prep - octavia - octavia_cleanup - octavia_deploy_prep - octavia_deploy - octavia_deploy_cleanup - designate_prep - designate - designate_cleanup - designate_deploy_prep - designate_deploy - designate_deploy_cleanup - nova_prep - nova - nova_cleanup - nova_deploy_prep - nova_deploy - nova_deploy_cleanup - mariadb_kuttl_run - mariadb_kuttl - kuttl_db_prep - kuttl_db_cleanup - kuttl_common_prep - kuttl_common_cleanup - keystone_kuttl_run - keystone_kuttl - barbican_kuttl_run - barbican_kuttl - placement_kuttl_run - placement_kuttl - cinder_kuttl_run - cinder_kuttl - neutron_kuttl_run - neutron_kuttl - octavia_kuttl_run - octavia_kuttl - designate_kuttl - designate_kuttl_run - ovn_kuttl_run - ovn_kuttl - infra_kuttl_run - infra_kuttl - ironic_kuttl_run - ironic_kuttl - ironic_kuttl_crc - heat_kuttl_run - heat_kuttl - heat_kuttl_crc - glance_kuttl_run - glance_kuttl - manila_kuttl_run - manila_kuttl - swift_kuttl_run - swift_kuttl - horizon_kuttl_run - horizon_kuttl - openstack_kuttl_prep - openstack_kuttl_run - openstack_kuttl_cleanup - openstack_kuttl - mariadb_chainsaw_run - mariadb_chainsaw - horizon_prep - horizon - horizon_cleanup - horizon_deploy_prep - horizon_deploy - horizon_deploy_cleanup - heat_prep - heat - heat_cleanup - heat_deploy_prep - heat_deploy - heat_deploy_cleanup - baremetal_prep - baremetal - baremetal_cleanup - ceph_help - ceph - ceph_cleanup - rook_prep - rook - rook_deploy_prep - rook_deploy - rook_crc_disk - rook_cleanup - lvms - nmstate - nncp - nncp_cleanup - netattach - netattach_cleanup - metallb - metallb_config - metallb_config_cleanup - metallb_cleanup - loki - loki_cleanup - loki_deploy - loki_deploy_cleanup - netobserv - netobserv_cleanup - netobserv_deploy - netobserv_deploy_cleanup - manila_prep - manila - manila_cleanup - manila_deploy_prep - manila_deploy - manila_deploy_cleanup - telemetry_prep - telemetry - telemetry_cleanup - telemetry_deploy_prep - telemetry_deploy - telemetry_deploy_cleanup - telemetry_kuttl_run - telemetry_kuttl - swift_prep - swift - swift_cleanup - swift_deploy_prep - swift_deploy - swift_deploy_cleanup - certmanager - certmanager_cleanup - validate_marketplace - redis_deploy_prep - redis_deploy - redis_deploy_cleanup - set_slower_etcd_profile /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/devsetup/Makefile: - help - download_tools - nfs - nfs_cleanup - crc - crc_cleanup - crc_scrub - crc_attach_default_interface - crc_attach_default_interface_cleanup - ipv6_lab_network - ipv6_lab_network_cleanup - ipv6_lab_nat64_router - ipv6_lab_nat64_router_cleanup - ipv6_lab_sno - ipv6_lab_sno_cleanup - ipv6_lab - ipv6_lab_cleanup - attach_default_interface - attach_default_interface_cleanup - network_isolation_bridge - network_isolation_bridge_cleanup - edpm_baremetal_compute - edpm_compute - edpm_compute_bootc - edpm_ansible_runner - edpm_computes_bgp - edpm_compute_repos - edpm_compute_cleanup - edpm_networker - edpm_networker_cleanup - edpm_deploy_instance - tripleo_deploy - standalone_deploy - standalone_sync - standalone - standalone_cleanup - standalone_snapshot - standalone_revert - cifmw_prepare - cifmw_cleanup - bmaas_network - bmaas_network_cleanup - bmaas_route_crc_and_crc_bmaas_networks - bmaas_route_crc_and_crc_bmaas_networks_cleanup - bmaas_crc_attach_network - bmaas_crc_attach_network_cleanup - bmaas_crc_baremetal_bridge - bmaas_crc_baremetal_bridge_cleanup - bmaas_baremetal_net_nad - bmaas_baremetal_net_nad_cleanup - bmaas_metallb - bmaas_metallb_cleanup - bmaas_virtual_bms - bmaas_virtual_bms_cleanup - bmaas_sushy_emulator - bmaas_sushy_emulator_cleanup - bmaas_sushy_emulator_wait - bmaas_generate_nodes_yaml - bmaas - bmaas_cleanup failed: false success: true 2026-03-20 15:50:27,296 p=31742 u=zuul n=ansible | TASK [install_yamls : Create the install_yamls parameters file dest={{ cifmw_basedir }}/artifacts/parameters/install-yamls-params.yml, content={{ { 'cifmw_install_yamls_environment': cifmw_install_yamls_environment, 'cifmw_install_yamls_defaults': cifmw_install_yamls_defaults } | to_nice_yaml }}, mode=0644] *** 2026-03-20 15:50:27,296 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.030) 0:01:02.921 ********** 2026-03-20 15:50:27,296 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.030) 0:01:02.920 ********** 2026-03-20 15:50:27,883 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:27,890 p=31742 u=zuul n=ansible | TASK [install_yamls : Create empty cifmw_install_yamls_environment if needed cifmw_install_yamls_environment={}] *** 2026-03-20 15:50:27,890 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.593) 0:01:03.515 ********** 2026-03-20 15:50:27,890 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.593) 0:01:03.514 ********** 2026-03-20 15:50:27,906 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:27,919 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Set the discovered images dict to empty cifmw_discovered_images_dict={}] *** 2026-03-20 15:50:27,919 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.028) 0:01:03.544 ********** 2026-03-20 15:50:27,919 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.028) 0:01:03.543 ********** 2026-03-20 15:50:27,930 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:27,937 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Discover images _raw_params=per-image.yml] ******* 2026-03-20 15:50:27,937 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.018) 0:01:03.562 ********** 2026-03-20 15:50:27,937 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.018) 0:01:03.561 ********** 2026-03-20 15:50:27,960 p=31742 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/discover_latest_image/tasks/per-image.yml for controller => (item={'key': 'default', 'value': {'base_url': 'https://cloud.centos.org/centos/9-stream/x86_64/images/', 'qcow_prefix': 'CentOS-Stream-GenericCloud-', 'images_file': 'CHECKSUM'}}) 2026-03-20 15:50:27,968 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Ensure the current image dict entry has the expected data that=['_expected_keys | difference(_given_keys) | length == 0'], fail_msg=The image discovery request dict's {{ _current_image.key }} entry does not match the expected schema. Requests must have the following keys: {{ _expected_keys }}, this entry had: {{ _given_keys }} See the discover_latest_image role's README for more information.] *** 2026-03-20 15:50:27,968 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.030) 0:01:03.593 ********** 2026-03-20 15:50:27,968 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:27 +0000 (0:00:00.031) 0:01:03.592 ********** 2026-03-20 15:50:27,992 p=31742 u=zuul n=ansible | ok: [controller] => changed: false msg: All assertions passed 2026-03-20 15:50:28,000 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Get latest image for the current entry url={{ _current_image.value.base_url }}, image_prefix={{ _current_image.value.qcow_prefix }}, images_file={{ _current_image.value.images_file }}] *** 2026-03-20 15:50:28,001 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.032) 0:01:03.626 ********** 2026-03-20 15:50:28,001 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.032) 0:01:03.624 ********** 2026-03-20 15:50:28,445 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:28,454 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Append the current return value to the discovered images dict cifmw_discovered_images_dict={{ cifmw_discovered_images_dict | combine({_current_image.key: discovered_image.data}) }}, cacheable=True] *** 2026-03-20 15:50:28,454 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.453) 0:01:04.079 ********** 2026-03-20 15:50:28,454 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.453) 0:01:04.078 ********** 2026-03-20 15:50:28,472 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:28,480 p=31742 u=zuul n=ansible | TASK [discover_latest_image : Export single-image facts if an image with name 'default' was discovered cifmw_discovered_image_name={{ cifmw_discovered_images_dict.default.image_name }}, cifmw_discovered_image_url={{ cifmw_discovered_images_dict.default.image_url }}, cifmw_discovered_hash={{ cifmw_discovered_images_dict.default.hash }}, cifmw_discovered_hash_algorithm={{ cifmw_discovered_images_dict.default.hash_algorithm }}, cacheable=True] *** 2026-03-20 15:50:28,480 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.025) 0:01:04.105 ********** 2026-03-20 15:50:28,480 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.025) 0:01:04.104 ********** 2026-03-20 15:50:28,512 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:50:28,530 p=31742 u=zuul n=ansible | TASK [cifmw_setup : Create artifacts with custom params mode=0644, dest={{ cifmw_basedir }}/artifacts/parameters/custom-params.yml, content={{ ci_framework_params | to_nice_yaml }}] *** 2026-03-20 15:50:28,530 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.050) 0:01:04.155 ********** 2026-03-20 15:50:28,530 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:28 +0000 (0:00:00.050) 0:01:04.154 ********** 2026-03-20 15:50:29,145 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:50:29,177 p=31742 u=zuul n=ansible | PLAY [Install dev tools] ******************************************************* 2026-03-20 15:50:29,197 p=31742 u=zuul n=ansible | TASK [Assert that operator_name is set that=['operator_name is defined']] ****** 2026-03-20 15:50:29,197 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.666) 0:01:04.822 ********** 2026-03-20 15:50:29,197 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.666) 0:01:04.821 ********** 2026-03-20 15:50:29,224 p=31742 u=zuul n=ansible | ok: [controller] => changed: false msg: All assertions passed 2026-03-20 15:50:29,230 p=31742 u=zuul n=ansible | TASK [Download install_yamls deps name=install_yamls_makes, tasks_from=make_download_tools] *** 2026-03-20 15:50:29,231 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.033) 0:01:04.856 ********** 2026-03-20 15:50:29,231 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.033) 0:01:04.855 ********** 2026-03-20 15:50:29,264 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_download_tools_env var=make_download_tools_env] *** 2026-03-20 15:50:29,265 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.034) 0:01:04.890 ********** 2026-03-20 15:50:29,265 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.034) 0:01:04.889 ********** 2026-03-20 15:50:29,281 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:29,288 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_download_tools_params var=make_download_tools_params] *** 2026-03-20 15:50:29,288 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.023) 0:01:04.913 ********** 2026-03-20 15:50:29,288 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.023) 0:01:04.912 ********** 2026-03-20 15:50:29,304 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:50:29,312 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Run download_tools output_dir={{ cifmw_basedir }}/artifacts, chdir=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/devsetup, script=make download_tools, dry_run={{ make_download_tools_dryrun|default(false)|bool }}, extra_args={{ dict((make_download_tools_env|default({})), **(make_download_tools_params|default({}))) }}] *** 2026-03-20 15:50:29,313 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.024) 0:01:04.938 ********** 2026-03-20 15:50:29,313 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:50:29 +0000 (0:00:00.024) 0:01:04.936 ********** 2026-03-20 15:50:29,402 p=31742 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_000_run_download.log 2026-03-20 15:51:08,474 p=31742 u=zuul n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ make_download_tools_until | default(true) }} 2026-03-20 15:51:08,477 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:51:08,490 p=31742 u=zuul n=ansible | TASK [run_hook : Assert parameters are valid quiet=True, that=['_list_hooks is not string', '_list_hooks is not mapping', '_list_hooks is iterable', '(hooks | default([])) is not string', '(hooks | default([])) is not mapping', '(hooks | default([])) is iterable']] *** 2026-03-20 15:51:08,490 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:39.177) 0:01:44.115 ********** 2026-03-20 15:51:08,490 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:39.177) 0:01:44.114 ********** 2026-03-20 15:51:08,600 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:08,607 p=31742 u=zuul n=ansible | TASK [run_hook : Assert single hooks are all mappings quiet=True, that=['_not_mapping_hooks | length == 0'], msg=All single hooks must be a list of mappings or a mapping.] *** 2026-03-20 15:51:08,607 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.116) 0:01:44.232 ********** 2026-03-20 15:51:08,607 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.117) 0:01:44.231 ********** 2026-03-20 15:51:08,722 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:08,733 p=31742 u=zuul n=ansible | TASK [run_hook : Loop on hooks for pre_infra _raw_params={{ hook.type }}.yml] *** 2026-03-20 15:51:08,733 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.125) 0:01:44.358 ********** 2026-03-20 15:51:08,733 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.125) 0:01:44.357 ********** 2026-03-20 15:51:08,877 p=31742 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/run_hook/tasks/playbook.yml for controller => (item={'name': 'Download needed tools', 'inventory': 'localhost,', 'connection': 'local', 'type': 'playbook', 'source': '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/devsetup/download_tools.yaml'}) 2026-03-20 15:51:08,888 p=31742 u=zuul n=ansible | TASK [run_hook : Set playbook path for Download needed tools cifmw_basedir={{ _bdir }}, hook_name={{ _hook_name }}, playbook_path={{ _play | realpath }}, log_path={{ _bdir }}/logs/{{ step }}_{{ _hook_name }}.log, extra_vars=-e namespace={{ cifmw_openstack_namespace }} {%- if hook.extra_vars is defined and hook.extra_vars|length > 0 -%} {% for key,value in hook.extra_vars.items() -%} {%- if key == 'file' %} -e "@{{ value }}" {%- else %} -e "{{ key }}={{ value }}" {%- endif %} {%- endfor %} {%- endif %}] *** 2026-03-20 15:51:08,888 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.155) 0:01:44.513 ********** 2026-03-20 15:51:08,888 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.155) 0:01:44.512 ********** 2026-03-20 15:51:08,954 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:08,962 p=31742 u=zuul n=ansible | TASK [run_hook : Get file stat path={{ playbook_path }}] *********************** 2026-03-20 15:51:08,962 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.073) 0:01:44.587 ********** 2026-03-20 15:51:08,962 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:08 +0000 (0:00:00.074) 0:01:44.586 ********** 2026-03-20 15:51:09,186 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:09,195 p=31742 u=zuul n=ansible | TASK [run_hook : Fail if playbook doesn't exist msg=Playbook {{ playbook_path }} doesn't seem to exist.] *** 2026-03-20 15:51:09,195 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.232) 0:01:44.820 ********** 2026-03-20 15:51:09,195 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.232) 0:01:44.819 ********** 2026-03-20 15:51:09,208 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:09,217 p=31742 u=zuul n=ansible | TASK [run_hook : Get parameters files paths={{ (cifmw_basedir, 'artifacts/parameters') | path_join }}, file_type=file, patterns=*.yml] *** 2026-03-20 15:51:09,217 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.022) 0:01:44.842 ********** 2026-03-20 15:51:09,217 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.022) 0:01:44.841 ********** 2026-03-20 15:51:09,434 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:09,445 p=31742 u=zuul n=ansible | TASK [run_hook : Add parameters artifacts as extra variables extra_vars={{ extra_vars }} {% for file in cifmw_run_hook_parameters_files.files %} -e "@{{ file.path }}" {%- endfor %}] *** 2026-03-20 15:51:09,445 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.228) 0:01:45.070 ********** 2026-03-20 15:51:09,445 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.228) 0:01:45.069 ********** 2026-03-20 15:51:09,470 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:09,485 p=31742 u=zuul n=ansible | TASK [run_hook : Ensure log directory exists path={{ log_path | dirname }}, state=directory, mode=0755] *** 2026-03-20 15:51:09,485 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.039) 0:01:45.110 ********** 2026-03-20 15:51:09,485 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.040) 0:01:45.109 ********** 2026-03-20 15:51:09,710 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:09,723 p=31742 u=zuul n=ansible | TASK [run_hook : Ensure artifacts directory exists path={{ cifmw_basedir }}/artifacts, state=directory, mode=0755] *** 2026-03-20 15:51:09,723 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.238) 0:01:45.348 ********** 2026-03-20 15:51:09,724 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.238) 0:01:45.347 ********** 2026-03-20 15:51:09,935 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:09,943 p=31742 u=zuul n=ansible | TASK [run_hook : Run hook without retry - Download needed tools] *************** 2026-03-20 15:51:09,943 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.219) 0:01:45.568 ********** 2026-03-20 15:51:09,943 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:09 +0000 (0:00:00.219) 0:01:45.566 ********** 2026-03-20 15:51:10,048 p=31742 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_001_run_hook_without_retry.log 2026-03-20 15:51:57,617 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:51:57,628 p=31742 u=zuul n=ansible | TASK [run_hook : Run hook with retry - Download needed tools] ****************** 2026-03-20 15:51:57,628 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:47.685) 0:02:33.253 ********** 2026-03-20 15:51:57,628 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:47.685) 0:02:33.252 ********** 2026-03-20 15:51:57,644 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:57,652 p=31742 u=zuul n=ansible | TASK [run_hook : Check if we have a file path={{ cifmw_basedir }}/artifacts/{{ step }}_{{ hook_name }}.yml] *** 2026-03-20 15:51:57,652 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.023) 0:02:33.277 ********** 2026-03-20 15:51:57,652 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.023) 0:02:33.276 ********** 2026-03-20 15:51:57,840 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:57,849 p=31742 u=zuul n=ansible | TASK [run_hook : Load generated content in main playbook file={{ cifmw_basedir }}/artifacts/{{ step }}_{{ hook_name }}.yml] *** 2026-03-20 15:51:57,849 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.197) 0:02:33.474 ********** 2026-03-20 15:51:57,849 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.197) 0:02:33.473 ********** 2026-03-20 15:51:57,860 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:57,900 p=31742 u=zuul n=ansible | PLAY [Prepare host virtualization] ********************************************* 2026-03-20 15:51:57,920 p=31742 u=zuul n=ansible | TASK [cifmw_setup : Load parameters files dir={{ cifmw_basedir }}/artifacts/parameters] *** 2026-03-20 15:51:57,920 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.071) 0:02:33.546 ********** 2026-03-20 15:51:57,921 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:57 +0000 (0:00:00.071) 0:02:33.544 ********** 2026-03-20 15:51:58,003 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:58,012 p=31742 u=zuul n=ansible | TASK [Ensure libvirt is present/configured name=libvirt_manager] *************** 2026-03-20 15:51:58,012 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.091) 0:02:33.637 ********** 2026-03-20 15:51:58,012 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.091) 0:02:33.636 ********** 2026-03-20 15:51:58,030 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,036 p=31742 u=zuul n=ansible | TASK [Perpare OpenShift provisioner node name=openshift_provisioner_node] ****** 2026-03-20 15:51:58,036 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.024) 0:02:33.662 ********** 2026-03-20 15:51:58,037 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.024) 0:02:33.660 ********** 2026-03-20 15:51:58,051 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,082 p=31742 u=zuul n=ansible | PLAY [Build dataset hook] ****************************************************** 2026-03-20 15:51:58,105 p=31742 u=zuul n=ansible | TASK [cifmw_setup : Load parameters files dir={{ cifmw_basedir }}/artifacts/parameters] *** 2026-03-20 15:51:58,105 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.068) 0:02:33.730 ********** 2026-03-20 15:51:58,105 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.068) 0:02:33.729 ********** 2026-03-20 15:51:58,186 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:58,195 p=31742 u=zuul n=ansible | TASK [networking_mapper : Check for Networking Environment Definition file existence path={{ cifmw_networking_mapper_networking_env_def_path }}] *** 2026-03-20 15:51:58,195 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.089) 0:02:33.820 ********** 2026-03-20 15:51:58,195 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.089) 0:02:33.819 ********** 2026-03-20 15:51:58,385 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:58,393 p=31742 u=zuul n=ansible | TASK [networking_mapper : Check for Networking Definition file existance that=['_net_env_def_stat.stat.exists'], msg=Ensure that the Networking Environment Definition file exists in {{ cifmw_networking_mapper_networking_env_def_path }}, quiet=True] *** 2026-03-20 15:51:58,393 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.198) 0:02:34.018 ********** 2026-03-20 15:51:58,393 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.198) 0:02:34.017 ********** 2026-03-20 15:51:58,413 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,422 p=31742 u=zuul n=ansible | TASK [networking_mapper : Load the Networking Definition from file path={{ cifmw_networking_mapper_networking_env_def_path }}] *** 2026-03-20 15:51:58,422 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.047 ********** 2026-03-20 15:51:58,422 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.046 ********** 2026-03-20 15:51:58,450 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,459 p=31742 u=zuul n=ansible | TASK [networking_mapper : Set cifmw_networking_env_definition is present cifmw_networking_env_definition={{ _net_env_def_slurp['content'] | b64decode | from_yaml }}, cacheable=True] *** 2026-03-20 15:51:58,460 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.037) 0:02:34.085 ********** 2026-03-20 15:51:58,460 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.037) 0:02:34.083 ********** 2026-03-20 15:51:58,477 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,493 p=31742 u=zuul n=ansible | TASK [Deploy OCP using Hive name=hive] ***************************************** 2026-03-20 15:51:58,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.033) 0:02:34.119 ********** 2026-03-20 15:51:58,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.033) 0:02:34.117 ********** 2026-03-20 15:51:58,510 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,517 p=31742 u=zuul n=ansible | TASK [Prepare CRC name=rhol_crc] *********************************************** 2026-03-20 15:51:58,517 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.023) 0:02:34.142 ********** 2026-03-20 15:51:58,517 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.023) 0:02:34.141 ********** 2026-03-20 15:51:58,538 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,547 p=31742 u=zuul n=ansible | TASK [Deploy OpenShift cluster using dev-scripts name=devscripts] ************** 2026-03-20 15:51:58,547 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.030) 0:02:34.172 ********** 2026-03-20 15:51:58,547 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.030) 0:02:34.171 ********** 2026-03-20 15:51:58,568 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,576 p=31742 u=zuul n=ansible | TASK [openshift_login : Ensure output directory exists path={{ cifmw_openshift_login_basedir }}/artifacts, state=directory, mode=0755] *** 2026-03-20 15:51:58,576 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.201 ********** 2026-03-20 15:51:58,576 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.200 ********** 2026-03-20 15:51:58,767 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:58,776 p=31742 u=zuul n=ansible | TASK [openshift_login : OpenShift login _raw_params=login.yml] ***************** 2026-03-20 15:51:58,777 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.200) 0:02:34.402 ********** 2026-03-20 15:51:58,777 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.200) 0:02:34.401 ********** 2026-03-20 15:51:58,804 p=31742 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/openshift_login/tasks/login.yml for controller 2026-03-20 15:51:58,815 p=31742 u=zuul n=ansible | TASK [openshift_login : Check if the password file is present path={{ cifmw_openshift_login_password_file | default(cifmw_openshift_password_file) }}] *** 2026-03-20 15:51:58,815 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.038) 0:02:34.440 ********** 2026-03-20 15:51:58,815 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.038) 0:02:34.439 ********** 2026-03-20 15:51:58,848 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,860 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch user password content src={{ cifmw_openshift_login_password_file | default(cifmw_openshift_password_file) }}] *** 2026-03-20 15:51:58,860 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.044) 0:02:34.485 ********** 2026-03-20 15:51:58,860 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.045) 0:02:34.484 ********** 2026-03-20 15:51:58,879 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,890 p=31742 u=zuul n=ansible | TASK [openshift_login : Set user password as a fact cifmw_openshift_login_password={{ cifmw_openshift_login_password_file_slurp.content | b64decode }}, cacheable=True] *** 2026-03-20 15:51:58,890 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.515 ********** 2026-03-20 15:51:58,890 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.029) 0:02:34.514 ********** 2026-03-20 15:51:58,907 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:58,917 p=31742 u=zuul n=ansible | TASK [openshift_login : Set role variables cifmw_openshift_login_kubeconfig={{ cifmw_openshift_login_kubeconfig | default(cifmw_openshift_kubeconfig) | default( ansible_env.KUBECONFIG if 'KUBECONFIG' in ansible_env else cifmw_openshift_login_kubeconfig_default_path ) | trim }}, cifmw_openshift_login_user={{ cifmw_openshift_login_user | default(cifmw_openshift_user) | default(omit) }}, cifmw_openshift_login_password={{ cifmw_openshift_login_password | default(cifmw_openshift_password) | default(omit) }}, cifmw_openshift_login_api={{ cifmw_openshift_login_api | default(cifmw_openshift_api) | default(omit) }}, cifmw_openshift_login_cert_login={{ cifmw_openshift_login_cert_login | default(false)}}, cifmw_openshift_login_provided_token={{ cifmw_openshift_provided_token | default(omit) }}, cacheable=True] *** 2026-03-20 15:51:58,918 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.027) 0:02:34.543 ********** 2026-03-20 15:51:58,918 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.027) 0:02:34.541 ********** 2026-03-20 15:51:58,949 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:58,959 p=31742 u=zuul n=ansible | TASK [openshift_login : Check if kubeconfig exists path={{ cifmw_openshift_login_kubeconfig }}] *** 2026-03-20 15:51:58,960 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.041) 0:02:34.585 ********** 2026-03-20 15:51:58,960 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:58 +0000 (0:00:00.041) 0:02:34.583 ********** 2026-03-20 15:51:59,153 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:59,160 p=31742 u=zuul n=ansible | TASK [openshift_login : Assert that enough data is provided to log in to OpenShift that=cifmw_openshift_login_kubeconfig_stat.stat.exists or (cifmw_openshift_login_provided_token is defined and cifmw_openshift_login_provided_token != '') or ( (cifmw_openshift_login_user is defined) and (cifmw_openshift_login_password is defined) and (cifmw_openshift_login_api is defined) ), msg=If an existing kubeconfig is not provided user/pwd or provided/initial token and API URL must be given] *** 2026-03-20 15:51:59,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.200) 0:02:34.785 ********** 2026-03-20 15:51:59,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.200) 0:02:34.784 ********** 2026-03-20 15:51:59,180 p=31742 u=zuul n=ansible | ok: [controller] => changed: false msg: All assertions passed 2026-03-20 15:51:59,189 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch kubeconfig content src={{ cifmw_openshift_login_kubeconfig }}] *** 2026-03-20 15:51:59,189 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.028) 0:02:34.814 ********** 2026-03-20 15:51:59,189 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.028) 0:02:34.813 ********** 2026-03-20 15:51:59,204 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:59,212 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch x509 key based users cifmw_openshift_login_key_based_users={{ ( cifmw_openshift_login_kubeconfig_content_b64.content | b64decode | from_yaml ). users | default([]) | selectattr('user.client-certificate-data', 'defined') | map(attribute="name") | map("split", "/") | map("first") }}, cacheable=True] *** 2026-03-20 15:51:59,212 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.023) 0:02:34.837 ********** 2026-03-20 15:51:59,212 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.023) 0:02:34.836 ********** 2026-03-20 15:51:59,228 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:59,235 p=31742 u=zuul n=ansible | TASK [openshift_login : Assign key based user if not provided and available cifmw_openshift_login_user={{ (cifmw_openshift_login_assume_cert_system_user | ternary('system:', '')) + (cifmw_openshift_login_key_based_users | map('replace', 'system:', '') | unique | first) }}, cifmw_openshift_login_cert_login=True, cacheable=True] *** 2026-03-20 15:51:59,236 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.023) 0:02:34.861 ********** 2026-03-20 15:51:59,236 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.023) 0:02:34.859 ********** 2026-03-20 15:51:59,256 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:59,266 p=31742 u=zuul n=ansible | TASK [openshift_login : Set the retry count cifmw_openshift_login_retries_cnt={{ 0 if cifmw_openshift_login_retries_cnt is undefined else cifmw_openshift_login_retries_cnt|int + 1 }}] *** 2026-03-20 15:51:59,266 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.030) 0:02:34.891 ********** 2026-03-20 15:51:59,266 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.030) 0:02:34.890 ********** 2026-03-20 15:51:59,292 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:51:59,300 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch token _raw_params=try_login.yml] ***************** 2026-03-20 15:51:59,300 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.033) 0:02:34.925 ********** 2026-03-20 15:51:59,300 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.033) 0:02:34.924 ********** 2026-03-20 15:51:59,325 p=31742 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/openshift_login/tasks/try_login.yml for controller 2026-03-20 15:51:59,339 p=31742 u=zuul n=ansible | TASK [openshift_login : Try get OpenShift access token _raw_params=oc whoami -t] *** 2026-03-20 15:51:59,339 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.039) 0:02:34.965 ********** 2026-03-20 15:51:59,340 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.039) 0:02:34.963 ********** 2026-03-20 15:51:59,356 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:51:59,364 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift token output_dir={{ cifmw_openshift_login_basedir }}/artifacts, script=oc login {%- if cifmw_openshift_login_provided_token is not defined %} {%- if cifmw_openshift_login_user is defined %} -u {{ cifmw_openshift_login_user }} {%- endif %} {%- if cifmw_openshift_login_password is defined %} -p {{ cifmw_openshift_login_password }} {%- endif %} {% else %} --token={{ cifmw_openshift_login_provided_token }} {%- endif %} {%- if cifmw_openshift_login_skip_tls_verify|bool %} --insecure-skip-tls-verify=true {%- endif %} {%- if cifmw_openshift_login_api is defined %} {{ cifmw_openshift_login_api }} {%- endif %}] *** 2026-03-20 15:51:59,364 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.024) 0:02:34.989 ********** 2026-03-20 15:51:59,364 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:51:59 +0000 (0:00:00.024) 0:02:34.988 ********** 2026-03-20 15:51:59,466 p=31742 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_002_fetch_openshift.log 2026-03-20 15:51:59,991 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:00,002 p=31742 u=zuul n=ansible | TASK [openshift_login : Ensure kubeconfig is provided that=cifmw_openshift_login_kubeconfig != ""] *** 2026-03-20 15:52:00,002 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.637) 0:02:35.627 ********** 2026-03-20 15:52:00,002 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.637) 0:02:35.626 ********** 2026-03-20 15:52:00,022 p=31742 u=zuul n=ansible | ok: [controller] => changed: false msg: All assertions passed 2026-03-20 15:52:00,033 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch new OpenShift access token _raw_params=oc whoami -t] *** 2026-03-20 15:52:00,033 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.031) 0:02:35.658 ********** 2026-03-20 15:52:00,033 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.031) 0:02:35.657 ********** 2026-03-20 15:52:00,337 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:00,348 p=31742 u=zuul n=ansible | TASK [openshift_login : Set new OpenShift token cifmw_openshift_login_token={{ (not cifmw_openshift_login_new_token_out.skipped | default(false)) | ternary(cifmw_openshift_login_new_token_out.stdout, cifmw_openshift_login_whoami_out.stdout) }}, cacheable=True] *** 2026-03-20 15:52:00,348 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.315) 0:02:35.973 ********** 2026-03-20 15:52:00,348 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.314) 0:02:35.972 ********** 2026-03-20 15:52:00,367 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:00,374 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift API URL _raw_params=oc whoami --show-server=true] *** 2026-03-20 15:52:00,374 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.025) 0:02:35.999 ********** 2026-03-20 15:52:00,374 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.025) 0:02:35.998 ********** 2026-03-20 15:52:00,635 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:00,649 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift kubeconfig context _raw_params=oc whoami -c] *** 2026-03-20 15:52:00,649 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.274) 0:02:36.274 ********** 2026-03-20 15:52:00,649 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.274) 0:02:36.273 ********** 2026-03-20 15:52:00,941 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:00,948 p=31742 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift current user _raw_params=oc whoami] **** 2026-03-20 15:52:00,948 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.299) 0:02:36.573 ********** 2026-03-20 15:52:00,948 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:00 +0000 (0:00:00.299) 0:02:36.572 ********** 2026-03-20 15:52:01,254 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:01,265 p=31742 u=zuul n=ansible | TASK [openshift_login : Set OpenShift user, context and API facts cifmw_openshift_login_api={{ cifmw_openshift_login_api_out.stdout }}, cifmw_openshift_login_context={{ cifmw_openshift_login_context_out.stdout }}, cifmw_openshift_login_user={{ _oauth_user }}, cifmw_openshift_kubeconfig={{ cifmw_openshift_login_kubeconfig }}, cifmw_openshift_api={{ cifmw_openshift_login_api_out.stdout }}, cifmw_openshift_context={{ cifmw_openshift_login_context_out.stdout }}, cifmw_openshift_user={{ _oauth_user }}, cifmw_openshift_token={{ cifmw_openshift_login_token | default(omit) }}, cifmw_install_yamls_environment={{ ( cifmw_install_yamls_environment | combine({'KUBECONFIG': cifmw_openshift_login_kubeconfig}) ) if cifmw_install_yamls_environment is defined else omit }}, cacheable=True] *** 2026-03-20 15:52:01,265 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.316) 0:02:36.890 ********** 2026-03-20 15:52:01,265 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.316) 0:02:36.889 ********** 2026-03-20 15:52:01,293 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:01,302 p=31742 u=zuul n=ansible | TASK [openshift_login : Create the openshift_login parameters file dest={{ cifmw_basedir }}/artifacts/parameters/openshift-login-params.yml, content={{ cifmw_openshift_login_params_content | from_yaml | to_nice_yaml }}, mode=0600] *** 2026-03-20 15:52:01,302 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.037) 0:02:36.927 ********** 2026-03-20 15:52:01,302 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.037) 0:02:36.926 ********** 2026-03-20 15:52:01,855 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:01,865 p=31742 u=zuul n=ansible | TASK [openshift_login : Read the install yamls parameters file path={{ cifmw_basedir }}/artifacts/parameters/install-yamls-params.yml] *** 2026-03-20 15:52:01,866 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.563) 0:02:37.491 ********** 2026-03-20 15:52:01,866 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:01 +0000 (0:00:00.563) 0:02:37.489 ********** 2026-03-20 15:52:02,202 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:02,213 p=31742 u=zuul n=ansible | TASK [openshift_login : Append the KUBECONFIG to the install yamls parameters content={{ cifmw_openshift_login_install_yamls_artifacts_slurp['content'] | b64decode | from_yaml | combine( { 'cifmw_install_yamls_environment': { 'KUBECONFIG': cifmw_openshift_login_kubeconfig } }, recursive=true) | to_nice_yaml }}, dest={{ cifmw_basedir }}/artifacts/parameters/install-yamls-params.yml, mode=0600] *** 2026-03-20 15:52:02,213 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:02 +0000 (0:00:00.347) 0:02:37.838 ********** 2026-03-20 15:52:02,213 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:02 +0000 (0:00:00.347) 0:02:37.837 ********** 2026-03-20 15:52:02,785 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:02,797 p=31742 u=zuul n=ansible | TASK [openshift_setup : Ensure output directory exists path={{ cifmw_openshift_setup_basedir }}/artifacts, state=directory, mode=0755] *** 2026-03-20 15:52:02,797 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:02 +0000 (0:00:00.583) 0:02:38.422 ********** 2026-03-20 15:52:02,797 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:02 +0000 (0:00:00.583) 0:02:38.421 ********** 2026-03-20 15:52:02,996 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:03,004 p=31742 u=zuul n=ansible | TASK [openshift_setup : Fetch namespaces to create cifmw_openshift_setup_namespaces={{ (( ([cifmw_install_yamls_defaults['NAMESPACE']] + ([cifmw_install_yamls_defaults['OPERATOR_NAMESPACE']] if 'OPERATOR_NAMESPACE' is in cifmw_install_yamls_defaults else []) ) if cifmw_install_yamls_defaults is defined else [] ) + cifmw_openshift_setup_create_namespaces) | unique }}] *** 2026-03-20 15:52:03,004 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:03 +0000 (0:00:00.207) 0:02:38.629 ********** 2026-03-20 15:52:03,004 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:03 +0000 (0:00:00.207) 0:02:38.628 ********** 2026-03-20 15:52:03,025 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:03,035 p=31742 u=zuul n=ansible | TASK [openshift_setup : Create required namespaces kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit) }}, name={{ item }}, kind=Namespace, state=present] *** 2026-03-20 15:52:03,035 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:03 +0000 (0:00:00.031) 0:02:38.661 ********** 2026-03-20 15:52:03,036 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:03 +0000 (0:00:00.031) 0:02:38.659 ********** 2026-03-20 15:52:04,129 p=31742 u=zuul n=ansible | changed: [controller] => (item=openstack) 2026-03-20 15:52:04,889 p=31742 u=zuul n=ansible | changed: [controller] => (item=openstack-operators) 2026-03-20 15:52:04,903 p=31742 u=zuul n=ansible | TASK [openshift_setup : Get internal OpenShift registry route kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=Route, name=default-route, namespace=openshift-image-registry] *** 2026-03-20 15:52:04,903 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:01.867) 0:02:40.528 ********** 2026-03-20 15:52:04,903 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:01.867) 0:02:40.527 ********** 2026-03-20 15:52:04,915 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:04,925 p=31742 u=zuul n=ansible | TASK [openshift_setup : Allow anonymous image-pulls in CRC registry for targeted namespaces state=present, kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, definition={'kind': 'RoleBinding', 'apiVersion': 'rbac.authorization.k8s.io/v1', 'metadata': {'name': 'system:image-puller', 'namespace': '{{ item }}'}, 'subjects': [{'kind': 'User', 'name': 'system:anonymous'}, {'kind': 'User', 'name': 'system:unauthenticated'}], 'roleRef': {'kind': 'ClusterRole', 'name': 'system:image-puller'}}] *** 2026-03-20 15:52:04,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.022) 0:02:40.550 ********** 2026-03-20 15:52:04,925 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.022) 0:02:40.549 ********** 2026-03-20 15:52:04,944 p=31742 u=zuul n=ansible | skipping: [controller] => (item=openstack) 2026-03-20 15:52:04,945 p=31742 u=zuul n=ansible | skipping: [controller] => (item=openstack-operators) 2026-03-20 15:52:04,946 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:04,955 p=31742 u=zuul n=ansible | TASK [openshift_setup : Wait for the image registry to be ready kind=Deployment, name=image-registry, namespace=openshift-image-registry, kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, wait=True, wait_sleep=10, wait_timeout=600, wait_condition={'type': 'Available', 'status': 'True'}] *** 2026-03-20 15:52:04,956 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.030) 0:02:40.581 ********** 2026-03-20 15:52:04,956 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.030) 0:02:40.579 ********** 2026-03-20 15:52:04,973 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:04,980 p=31742 u=zuul n=ansible | TASK [openshift_setup : Login into OpenShift internal registry output_dir={{ cifmw_openshift_setup_basedir }}/artifacts, script=podman login -u {{ cifmw_openshift_user }} -p {{ cifmw_openshift_token }} {%- if cifmw_openshift_setup_skip_internal_registry_tls_verify|bool %} --tls-verify=false {%- endif %} {{ cifmw_openshift_setup_registry_default_route.resources[0].spec.host }}] *** 2026-03-20 15:52:04,981 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.024) 0:02:40.606 ********** 2026-03-20 15:52:04,981 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:04 +0000 (0:00:00.024) 0:02:40.604 ********** 2026-03-20 15:52:04,996 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,003 p=31742 u=zuul n=ansible | TASK [Ensure we have custom CA installed on host role=install_ca] ************** 2026-03-20 15:52:05,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.628 ********** 2026-03-20 15:52:05,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.627 ********** 2026-03-20 15:52:05,017 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,024 p=31742 u=zuul n=ansible | TASK [openshift_setup : Update ca bundle _raw_params=update-ca-trust extract] *** 2026-03-20 15:52:05,024 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.020) 0:02:40.649 ********** 2026-03-20 15:52:05,024 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.020) 0:02:40.648 ********** 2026-03-20 15:52:05,039 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,045 p=31742 u=zuul n=ansible | TASK [openshift_setup : Slurp CAs file src={{ cifmw_openshift_setup_ca_bundle_path }}] *** 2026-03-20 15:52:05,045 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.021) 0:02:40.670 ********** 2026-03-20 15:52:05,045 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.021) 0:02:40.669 ********** 2026-03-20 15:52:05,059 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,066 p=31742 u=zuul n=ansible | TASK [openshift_setup : Create config map with registry CAs kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, definition={'apiVersion': 'v1', 'kind': 'ConfigMap', 'metadata': {'namespace': 'openshift-config', 'name': 'registry-cas'}, 'data': '{{ _config_map_data | items2dict }}'}] *** 2026-03-20 15:52:05,066 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.020) 0:02:40.691 ********** 2026-03-20 15:52:05,066 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.020) 0:02:40.690 ********** 2026-03-20 15:52:05,084 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,090 p=31742 u=zuul n=ansible | TASK [openshift_setup : Install Red Hat CA for pulling images from internal registry kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, merge_type=merge, definition={'apiVersion': 'config.openshift.io/v1', 'kind': 'Image', 'metadata': {'name': 'cluster'}, 'spec': {'additionalTrustedCA': {'name': 'registry-cas'}}}] *** 2026-03-20 15:52:05,090 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.023) 0:02:40.715 ********** 2026-03-20 15:52:05,090 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.023) 0:02:40.714 ********** 2026-03-20 15:52:05,105 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,112 p=31742 u=zuul n=ansible | TASK [openshift_setup : Add insecure registry kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, merge_type=merge, definition={'apiVersion': 'config.openshift.io/v1', 'kind': 'Image', 'metadata': {'name': 'cluster'}, 'spec': {'registrySources': {'insecureRegistries': ['{{ cifmw_update_containers_registry }}'], 'allowedRegistries': '{{ all_registries }}'}}}] *** 2026-03-20 15:52:05,113 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.738 ********** 2026-03-20 15:52:05,113 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.736 ********** 2026-03-20 15:52:05,127 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,135 p=31742 u=zuul n=ansible | TASK [openshift_setup : Create a ICSP with repository digest mirrors kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, definition={'apiVersion': 'operator.openshift.io/v1alpha1', 'kind': 'ImageContentSourcePolicy', 'metadata': {'name': 'registry-digest-mirrors'}, 'spec': {'repositoryDigestMirrors': '{{ cifmw_openshift_setup_digest_mirrors }}'}}] *** 2026-03-20 15:52:05,135 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.760 ********** 2026-03-20 15:52:05,135 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.022) 0:02:40.759 ********** 2026-03-20 15:52:05,153 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:05,160 p=31742 u=zuul n=ansible | TASK [openshift_setup : Gather network.operator info kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, api_version=operator.openshift.io/v1, kind=Network, name=cluster] *** 2026-03-20 15:52:05,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.025) 0:02:40.786 ********** 2026-03-20 15:52:05,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:05 +0000 (0:00:00.025) 0:02:40.784 ********** 2026-03-20 15:52:06,099 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:06,111 p=31742 u=zuul n=ansible | TASK [openshift_setup : Patch network operator api_version=operator.openshift.io/v1, kubeconfig={{ cifmw_openshift_kubeconfig }}, kind=Network, name=cluster, persist_config=True, patch=[{'path': '/spec/defaultNetwork/ovnKubernetesConfig/gatewayConfig/routingViaHost', 'value': True, 'op': 'replace'}, {'path': '/spec/defaultNetwork/ovnKubernetesConfig/gatewayConfig/ipForwarding', 'value': 'Global', 'op': 'replace'}]] *** 2026-03-20 15:52:06,111 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:06 +0000 (0:00:00.950) 0:02:41.736 ********** 2026-03-20 15:52:06,111 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:06 +0000 (0:00:00.950) 0:02:41.735 ********** 2026-03-20 15:52:07,039 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:07,047 p=31742 u=zuul n=ansible | TASK [openshift_setup : Patch samples registry configuration kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, api_version=samples.operator.openshift.io/v1, kind=Config, name=cluster, patch=[{'op': 'replace', 'path': '/spec/samplesRegistry', 'value': '{{ cifmw_openshift_setup_samples_registry }}'}]] *** 2026-03-20 15:52:07,047 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.936) 0:02:42.672 ********** 2026-03-20 15:52:07,047 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.936) 0:02:42.671 ********** 2026-03-20 15:52:07,872 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:07,878 p=31742 u=zuul n=ansible | TASK [openshift_setup : Delete the pods from openshift-marketplace namespace kind=Pod, state=absent, delete_all=True, kubeconfig={{ cifmw_openshift_kubeconfig }}, namespace=openshift-marketplace] *** 2026-03-20 15:52:07,878 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.831) 0:02:43.503 ********** 2026-03-20 15:52:07,878 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.831) 0:02:43.502 ********** 2026-03-20 15:52:07,893 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:07,900 p=31742 u=zuul n=ansible | TASK [openshift_setup : Wait for openshift-marketplace pods to be running _raw_params=oc wait pod --all --for=condition=Ready -n openshift-marketplace --timeout=1m] *** 2026-03-20 15:52:07,900 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.021) 0:02:43.525 ********** 2026-03-20 15:52:07,900 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.021) 0:02:43.524 ********** 2026-03-20 15:52:07,915 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:52:07,928 p=31742 u=zuul n=ansible | TASK [Deploy Observability operator. name=openshift_obs] *********************** 2026-03-20 15:52:07,928 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.028) 0:02:43.553 ********** 2026-03-20 15:52:07,928 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:07 +0000 (0:00:00.028) 0:02:43.552 ********** 2026-03-20 15:52:08,015 p=31742 u=zuul n=ansible | TASK [openshift_obs : Install cluster observability operator. definition={{cifmw_openshift_obs_definition }}, kubeconfig={{ cifmw_openshift_kubeconfig }}, state=present] *** 2026-03-20 15:52:08,015 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:08 +0000 (0:00:00.086) 0:02:43.640 ********** 2026-03-20 15:52:08,015 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:08 +0000 (0:00:00.086) 0:02:43.639 ********** 2026-03-20 15:52:08,856 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:52:08,864 p=31742 u=zuul n=ansible | TASK [openshift_obs : Wait for observability operator deployment kind=Deployment, namespace=openshift-operators, name=observability-operator, wait=True, wait_timeout=300, wait_condition={'type': 'Available', 'status': 'True'}, kubeconfig={{ cifmw_openshift_kubeconfig }}] *** 2026-03-20 15:52:08,864 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:08 +0000 (0:00:00.848) 0:02:44.489 ********** 2026-03-20 15:52:08,864 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:08 +0000 (0:00:00.848) 0:02:44.488 ********** 2026-03-20 15:52:59,902 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:52:59,912 p=31742 u=zuul n=ansible | TASK [openshift_obs : Wait for observability-operator pod kind=Pod, namespace=openshift-operators, label_selectors=['app.kubernetes.io/name = observability-operator'], wait=True, wait_timeout=300, wait_condition={'type': 'Ready', 'status': 'True'}, kubeconfig={{ cifmw_openshift_kubeconfig }}] *** 2026-03-20 15:52:59,912 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:59 +0000 (0:00:51.048) 0:03:35.537 ********** 2026-03-20 15:52:59,912 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:52:59 +0000 (0:00:51.048) 0:03:35.536 ********** 2026-03-20 15:53:00,782 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:53:00,807 p=31742 u=zuul n=ansible | TASK [Deploy Metal3 BMHs name=deploy_bmh] ************************************** 2026-03-20 15:53:00,808 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.895) 0:03:36.433 ********** 2026-03-20 15:53:00,808 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.895) 0:03:36.432 ********** 2026-03-20 15:53:00,828 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,836 p=31742 u=zuul n=ansible | TASK [Install certmanager operator role name=cert_manager] ********************* 2026-03-20 15:53:00,836 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.461 ********** 2026-03-20 15:53:00,836 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.460 ********** 2026-03-20 15:53:00,858 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,865 p=31742 u=zuul n=ansible | TASK [Configure hosts networking using nmstate name=ci_nmstate] **************** 2026-03-20 15:53:00,865 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.490 ********** 2026-03-20 15:53:00,865 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.489 ********** 2026-03-20 15:53:00,885 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,893 p=31742 u=zuul n=ansible | TASK [Configure multus networks name=ci_multus] ******************************** 2026-03-20 15:53:00,893 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.518 ********** 2026-03-20 15:53:00,893 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.028) 0:03:36.517 ********** 2026-03-20 15:53:00,909 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,920 p=31742 u=zuul n=ansible | TASK [Deploy Sushy Emulator service pod name=sushy_emulator] ******************* 2026-03-20 15:53:00,920 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.027) 0:03:36.545 ********** 2026-03-20 15:53:00,920 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.027) 0:03:36.544 ********** 2026-03-20 15:53:00,937 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,947 p=31742 u=zuul n=ansible | TASK [Setup Libvirt on controller name=libvirt_manager] ************************ 2026-03-20 15:53:00,947 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.026) 0:03:36.572 ********** 2026-03-20 15:53:00,947 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.026) 0:03:36.571 ********** 2026-03-20 15:53:00,963 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:00,976 p=31742 u=zuul n=ansible | TASK [Prepare container package builder name=pkg_build] ************************ 2026-03-20 15:53:00,976 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.029) 0:03:36.601 ********** 2026-03-20 15:53:00,976 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:00 +0000 (0:00:00.029) 0:03:36.600 ********** 2026-03-20 15:53:00,992 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:01,003 p=31742 u=zuul n=ansible | TASK [run_hook : Assert parameters are valid quiet=True, that=['_list_hooks is not string', '_list_hooks is not mapping', '_list_hooks is iterable', '(hooks | default([])) is not string', '(hooks | default([])) is not mapping', '(hooks | default([])) is iterable']] *** 2026-03-20 15:53:01,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.026) 0:03:36.628 ********** 2026-03-20 15:53:01,003 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.026) 0:03:36.627 ********** 2026-03-20 15:53:01,050 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:53:01,060 p=31742 u=zuul n=ansible | TASK [run_hook : Assert single hooks are all mappings quiet=True, that=['_not_mapping_hooks | length == 0'], msg=All single hooks must be a list of mappings or a mapping.] *** 2026-03-20 15:53:01,060 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.057) 0:03:36.685 ********** 2026-03-20 15:53:01,060 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.057) 0:03:36.684 ********** 2026-03-20 15:53:01,149 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:53:01,156 p=31742 u=zuul n=ansible | TASK [run_hook : Loop on hooks for post_infra _raw_params={{ hook.type }}.yml] *** 2026-03-20 15:53:01,156 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.096) 0:03:36.781 ********** 2026-03-20 15:53:01,156 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.096) 0:03:36.780 ********** 2026-03-20 15:53:01,243 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:01,260 p=31742 u=zuul n=ansible | TASK [Load parameters dir={{ item }}] ****************************************** 2026-03-20 15:53:01,260 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.104) 0:03:36.886 ********** 2026-03-20 15:53:01,260 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.104) 0:03:36.884 ********** 2026-03-20 15:53:01,299 p=31742 u=zuul n=ansible | ok: [controller] => (item=/home/zuul/ci-framework-data/artifacts/parameters) 2026-03-20 15:53:01,302 p=31742 u=zuul n=ansible | ok: [controller] => (item=/etc/ci/env) 2026-03-20 15:53:01,313 p=31742 u=zuul n=ansible | TASK [Ensure that the isolated net was configured for crc that=['crc_ci_bootstrap_networks_out is defined', 'crc_ci_bootstrap_networks_out[_crc_hostname] is defined', "crc_ci_bootstrap_networks_out[_crc_hostname]['default'] is defined"]] *** 2026-03-20 15:53:01,313 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.052) 0:03:36.938 ********** 2026-03-20 15:53:01,313 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.052) 0:03:36.937 ********** 2026-03-20 15:53:01,384 p=31742 u=zuul n=ansible | ok: [controller] => changed: false msg: All assertions passed 2026-03-20 15:53:01,389 p=31742 u=zuul n=ansible | TASK [Set facts for further usage within the framework cifmw_edpm_prepare_extra_vars={'NNCP_INTERFACE': '{{ crc_ci_bootstrap_networks_out.crc.default.iface }}', 'NETWORK_MTU': '{{ crc_ci_bootstrap_networks_out.crc.default.mtu }}', 'NNCP_DNS_SERVER': "{{\n cifmw_nncp_dns_server |\n default(crc_ci_bootstrap_networks_out[_crc_hostname].default.ip) |\n split('/') | first\n}}"}] *** 2026-03-20 15:53:01,389 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.076) 0:03:37.015 ********** 2026-03-20 15:53:01,390 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.076) 0:03:37.013 ********** 2026-03-20 15:53:01,407 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:53:01,432 p=31742 u=zuul n=ansible | PLAY [Deploy Openstack Operators] ********************************************** 2026-03-20 15:53:01,449 p=31742 u=zuul n=ansible | TASK [Use the locally built operators if any _local_operators_indexes={{ _local_operators_indexes|default({}) | combine({ item.key.split('-')[0]|upper+'_IMG': cifmw_operator_build_output['operators'][item.key].image_catalog}) }}] *** 2026-03-20 15:53:01,449 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.059) 0:03:37.074 ********** 2026-03-20 15:53:01,449 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.059) 0:03:37.073 ********** 2026-03-20 15:53:01,474 p=31742 u=zuul n=ansible | ok: [controller] => (item={'key': 'openstack-operator', 'value': {'git_commit_hash': '36856d22fbbd028e148ba6b5277b8d8be928cf7c', 'git_src_dir': '/home/zuul-worker/src/github.com/openstack-k8s-operators/openstack-operator', 'image': '38.102.83.147:5001/openstack-k8s-operators/openstack-operator:36856d22fbbd028e148ba6b5277b8d8be928cf7c', 'image_bundle': '38.102.83.147:5001/openstack-k8s-operators/openstack-operator-bundle:36856d22fbbd028e148ba6b5277b8d8be928cf7c', 'image_catalog': '38.102.83.147:5001/openstack-k8s-operators/openstack-operator-index:36856d22fbbd028e148ba6b5277b8d8be928cf7c'}}) 2026-03-20 15:53:01,484 p=31742 u=zuul n=ansible | ok: [controller] => (item={'key': 'watcher-operator', 'value': {'git_commit_hash': 'ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'git_src_dir': '/home/zuul-worker/src/github.com/openstack-k8s-operators/watcher-operator', 'image': '38.102.83.147:5001/openstack-k8s-operators/watcher-operator:ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'image_bundle': '38.102.83.147:5001/openstack-k8s-operators/watcher-operator-bundle:ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'image_catalog': '38.102.83.147:5001/openstack-k8s-operators/watcher-operator-index:ee00c2d330b27d46c48ac29a20680b56ca50df3c'}}) 2026-03-20 15:53:01,494 p=31742 u=zuul n=ansible | TASK [Set install_yamls Makefile environment variables cifmw_edpm_prepare_common_env={{ cifmw_install_yamls_environment | combine({'PATH': cifmw_path}) | combine(cifmw_edpm_prepare_extra_vars | default({})) }}, cifmw_edpm_prepare_operators_build_output={{ operators_build_output }}, cifmw_edpm_prepare_make_openstack_env={{ _local_operators_indexes | combine(_openstack_operator_images) }}] *** 2026-03-20 15:53:01,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.044) 0:03:37.119 ********** 2026-03-20 15:53:01,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.044) 0:03:37.118 ********** 2026-03-20 15:53:01,513 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:53:01,520 p=31742 u=zuul n=ansible | TASK [detect if openstack operator is installed _raw_params=oc get sub --ignore-not-found=true -n openstack-operators -o name openstack-operator] *** 2026-03-20 15:53:01,520 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.026) 0:03:37.145 ********** 2026-03-20 15:53:01,520 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.026) 0:03:37.144 ********** 2026-03-20 15:53:01,837 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:53:01,844 p=31742 u=zuul n=ansible | TASK [Install openstack operator and wait for the csv to succeed name=install_yamls_makes, tasks_from=make_openstack_init] *** 2026-03-20 15:53:01,844 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.323) 0:03:37.469 ********** 2026-03-20 15:53:01,844 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.323) 0:03:37.468 ********** 2026-03-20 15:53:01,874 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_openstack_init_env var=make_openstack_init_env] *** 2026-03-20 15:53:01,874 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.030) 0:03:37.500 ********** 2026-03-20 15:53:01,875 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.030) 0:03:37.498 ********** 2026-03-20 15:53:01,900 p=31742 u=zuul n=ansible | ok: [controller] => make_openstack_init_env: BMO_SETUP: false CHECKOUT_FROM_OPENSTACK_REF: 'true' KUBECONFIG: /home/zuul/.crc/machines/crc/kubeconfig NETWORK_MTU: 1500 NNCP_DNS_SERVER: 192.168.122.10 NNCP_INTERFACE: ens7 OPENSTACK_BUNDLE_IMG: 38.102.83.147:5001/openstack-k8s-operators/openstack-operator-bundle:36856d22fbbd028e148ba6b5277b8d8be928cf7c OPENSTACK_IMG: 38.102.83.147:5001/openstack-k8s-operators/openstack-operator-index:36856d22fbbd028e148ba6b5277b8d8be928cf7c OPENSTACK_K8S_BRANCH: main OUT: /home/zuul/ci-framework-data/artifacts/manifests OUTPUT_DIR: /home/zuul/ci-framework-data/artifacts/edpm PATH: /home/zuul/.crc/bin:/home/zuul/.crc/bin/oc:/home/zuul/bin:/home/zuul/.local/bin:/home/zuul/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin WATCHER_BRANCH: '' WATCHER_IMG: 38.102.83.147:5001/openstack-k8s-operators/watcher-operator-index:ee00c2d330b27d46c48ac29a20680b56ca50df3c WATCHER_REPO: /home/zuul/src/github.com/openstack-k8s-operators/watcher-operator 2026-03-20 15:53:01,907 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_openstack_init_params var=make_openstack_init_params] *** 2026-03-20 15:53:01,907 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.032) 0:03:37.532 ********** 2026-03-20 15:53:01,907 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.032) 0:03:37.531 ********** 2026-03-20 15:53:01,922 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:53:01,929 p=31742 u=zuul n=ansible | TASK [install_yamls_makes : Run openstack_init output_dir={{ cifmw_basedir }}/artifacts, chdir=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls, script=make openstack_init, dry_run={{ make_openstack_init_dryrun|default(false)|bool }}, extra_args={{ dict((make_openstack_init_env|default({})), **(make_openstack_init_params|default({}))) }}] *** 2026-03-20 15:53:01,929 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.022) 0:03:37.554 ********** 2026-03-20 15:53:01,929 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:53:01 +0000 (0:00:00.022) 0:03:37.553 ********** 2026-03-20 15:53:02,033 p=31742 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_003_run_openstack.log 2026-03-20 15:57:52,739 p=31742 u=zuul n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ make_openstack_init_until | default(true) }} 2026-03-20 15:57:52,748 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:57:52,764 p=31742 u=zuul n=ansible | TASK [Run hooks after installing openstack name=run_hook] ********************** 2026-03-20 15:57:52,765 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:04:50.835) 0:08:28.390 ********** 2026-03-20 15:57:52,765 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:04:50.835) 0:08:28.389 ********** 2026-03-20 15:57:52,805 p=31742 u=zuul n=ansible | TASK [run_hook : Assert parameters are valid quiet=True, that=['_list_hooks is not string', '_list_hooks is not mapping', '_list_hooks is iterable', '(hooks | default([])) is not string', '(hooks | default([])) is not mapping', '(hooks | default([])) is iterable']] *** 2026-03-20 15:57:52,805 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:00:00.040) 0:08:28.430 ********** 2026-03-20 15:57:52,805 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:00:00.040) 0:08:28.429 ********** 2026-03-20 15:57:52,882 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:52,892 p=31742 u=zuul n=ansible | TASK [run_hook : Assert single hooks are all mappings quiet=True, that=['_not_mapping_hooks | length == 0'], msg=All single hooks must be a list of mappings or a mapping.] *** 2026-03-20 15:57:52,892 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:00:00.086) 0:08:28.517 ********** 2026-03-20 15:57:52,892 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:52 +0000 (0:00:00.086) 0:08:28.516 ********** 2026-03-20 15:57:53,001 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:53,010 p=31742 u=zuul n=ansible | TASK [run_hook : Loop on hooks for post_install_operators_kuttl_from_operator _raw_params={{ hook.type }}.yml] *** 2026-03-20 15:57:53,010 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.117) 0:08:28.635 ********** 2026-03-20 15:57:53,010 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.117) 0:08:28.634 ********** 2026-03-20 15:57:53,146 p=31742 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/run_hook/tasks/playbook.yml for controller => (item={'name': 'Deploy watcher operator', 'type': 'playbook', 'source': '/home/zuul/src/github.com/openstack-k8s-operators/watcher-operator/ci/playbooks/deploy_watcher_operator.yaml', 'extra_vars': {'content_provider_os_registry_url': '38.102.83.147:5001/podified-master-centos10', 'watcher_catalog_image': '38.102.83.147:5001/openstack-k8s-operators/watcher-operator-index:ee00c2d330b27d46c48ac29a20680b56ca50df3c', 'watcher_services_tag': 'watcher_latest', 'watcher_repo': '/home/zuul/src/github.com/openstack-k8s-operators/watcher-operator'}}) 2026-03-20 15:57:53,160 p=31742 u=zuul n=ansible | TASK [run_hook : Set playbook path for Deploy watcher operator cifmw_basedir={{ _bdir }}, hook_name={{ _hook_name }}, playbook_path={{ _play | realpath }}, log_path={{ _bdir }}/logs/{{ step }}_{{ _hook_name }}.log, extra_vars=-e namespace={{ cifmw_openstack_namespace }} {%- if hook.extra_vars is defined and hook.extra_vars|length > 0 -%} {% for key,value in hook.extra_vars.items() -%} {%- if key == 'file' %} -e "@{{ value }}" {%- else %} -e "{{ key }}={{ value }}" {%- endif %} {%- endfor %} {%- endif %}] *** 2026-03-20 15:57:53,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.149) 0:08:28.785 ********** 2026-03-20 15:57:53,160 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.149) 0:08:28.784 ********** 2026-03-20 15:57:53,208 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:53,219 p=31742 u=zuul n=ansible | TASK [run_hook : Get file stat path={{ playbook_path }}] *********************** 2026-03-20 15:57:53,219 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.059) 0:08:28.844 ********** 2026-03-20 15:57:53,219 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.059) 0:08:28.843 ********** 2026-03-20 15:57:53,484 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:53,493 p=31742 u=zuul n=ansible | TASK [run_hook : Fail if playbook doesn't exist msg=Playbook {{ playbook_path }} doesn't seem to exist.] *** 2026-03-20 15:57:53,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.274) 0:08:29.119 ********** 2026-03-20 15:57:53,494 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.274) 0:08:29.117 ********** 2026-03-20 15:57:53,516 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:57:53,532 p=31742 u=zuul n=ansible | TASK [run_hook : Get parameters files paths={{ (cifmw_basedir, 'artifacts/parameters') | path_join }}, file_type=file, patterns=*.yml] *** 2026-03-20 15:57:53,532 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.038) 0:08:29.157 ********** 2026-03-20 15:57:53,532 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.038) 0:08:29.156 ********** 2026-03-20 15:57:53,758 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:53,766 p=31742 u=zuul n=ansible | TASK [run_hook : Add parameters artifacts as extra variables extra_vars={{ extra_vars }} {% for file in cifmw_run_hook_parameters_files.files %} -e "@{{ file.path }}" {%- endfor %}] *** 2026-03-20 15:57:53,766 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.234) 0:08:29.392 ********** 2026-03-20 15:57:53,767 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.234) 0:08:29.390 ********** 2026-03-20 15:57:53,794 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:53,801 p=31742 u=zuul n=ansible | TASK [run_hook : Ensure log directory exists path={{ log_path | dirname }}, state=directory, mode=0755] *** 2026-03-20 15:57:53,801 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.034) 0:08:29.426 ********** 2026-03-20 15:57:53,801 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:53 +0000 (0:00:00.034) 0:08:29.425 ********** 2026-03-20 15:57:54,011 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:54,021 p=31742 u=zuul n=ansible | TASK [run_hook : Ensure artifacts directory exists path={{ cifmw_basedir }}/artifacts, state=directory, mode=0755] *** 2026-03-20 15:57:54,021 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:54 +0000 (0:00:00.220) 0:08:29.646 ********** 2026-03-20 15:57:54,021 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:54 +0000 (0:00:00.220) 0:08:29.645 ********** 2026-03-20 15:57:54,252 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:57:54,262 p=31742 u=zuul n=ansible | TASK [run_hook : Run hook without retry - Deploy watcher operator] ************* 2026-03-20 15:57:54,262 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:54 +0000 (0:00:00.241) 0:08:29.887 ********** 2026-03-20 15:57:54,262 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:57:54 +0000 (0:00:00.241) 0:08:29.886 ********** 2026-03-20 15:57:54,393 p=31742 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_004_run_hook_without_retry_deploy.log 2026-03-20 15:58:37,043 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 15:58:37,052 p=31742 u=zuul n=ansible | TASK [run_hook : Run hook with retry - Deploy watcher operator] **************** 2026-03-20 15:58:37,052 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:42.790) 0:09:12.677 ********** 2026-03-20 15:58:37,052 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:42.790) 0:09:12.676 ********** 2026-03-20 15:58:37,068 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:58:37,075 p=31742 u=zuul n=ansible | TASK [run_hook : Check if we have a file path={{ cifmw_basedir }}/artifacts/{{ step }}_{{ hook_name }}.yml] *** 2026-03-20 15:58:37,075 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.023) 0:09:12.700 ********** 2026-03-20 15:58:37,075 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.023) 0:09:12.699 ********** 2026-03-20 15:58:37,275 p=31742 u=zuul n=ansible | ok: [controller] 2026-03-20 15:58:37,282 p=31742 u=zuul n=ansible | TASK [run_hook : Load generated content in main playbook file={{ cifmw_basedir }}/artifacts/{{ step }}_{{ hook_name }}.yml] *** 2026-03-20 15:58:37,282 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.206) 0:09:12.907 ********** 2026-03-20 15:58:37,282 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.206) 0:09:12.906 ********** 2026-03-20 15:58:37,295 p=31742 u=zuul n=ansible | skipping: [controller] 2026-03-20 15:58:37,307 p=31742 u=zuul n=ansible | TASK [install kuttl test_suite dependencies chdir={{ ansible_user_dir }}/{{ operator_basedir }}, _raw_params=make kuttl-test-prep] *** 2026-03-20 15:58:37,308 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.025) 0:09:12.933 ********** 2026-03-20 15:58:37,308 p=31742 u=zuul n=ansible | Friday 20 March 2026 15:58:37 +0000 (0:00:00.025) 0:09:12.932 ********** 2026-03-20 16:01:27,307 p=31742 u=zuul n=ansible | changed: [controller] 2026-03-20 16:01:27,340 p=31742 u=zuul n=ansible | PLAY RECAP ********************************************************************* 2026-03-20 16:01:27,340 p=31742 u=zuul n=ansible | controller : ok=117 changed=40 unreachable=0 failed=0 skipped=80 rescued=0 ignored=1 2026-03-20 16:01:27,340 p=31742 u=zuul n=ansible | Friday 20 March 2026 16:01:27 +0000 (0:02:50.032) 0:12:02.965 ********** 2026-03-20 16:01:27,340 p=31742 u=zuul n=ansible | =============================================================================== 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | install_yamls_makes : Run openstack_init ------------------------------ 290.84s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | install kuttl test_suite dependencies --------------------------------- 170.03s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_obs : Wait for observability operator deployment ------------- 51.05s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | run_hook : Run hook without retry - Download needed tools -------------- 47.69s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | run_hook : Run hook without retry - Deploy watcher operator ------------ 42.79s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | install_yamls_makes : Run download_tools ------------------------------- 39.18s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | ci_setup : Install needed packages ------------------------------------- 32.91s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | repo_setup : Initialize python venv and install requirements ------------ 9.05s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | ci_setup : Install openshift client ------------------------------------- 4.41s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_setup : Create required namespaces ---------------------------- 1.87s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | Gathering Facts --------------------------------------------------------- 1.24s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | repo_setup : Get repo-setup repository ---------------------------------- 1.11s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | ci_setup : Manage directories ------------------------------------------- 1.06s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | repo_setup : Make sure git-core package is installed -------------------- 1.00s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | repo_setup : Install repo-setup package --------------------------------- 0.96s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_setup : Gather network.operator info -------------------------- 0.95s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_setup : Patch network operator -------------------------------- 0.94s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_obs : Wait for observability-operator pod --------------------- 0.90s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_obs : Install cluster observability operator. ----------------- 0.85s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | openshift_setup : Patch samples registry configuration ------------------ 0.83s 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | Friday 20 March 2026 16:01:27 +0000 (0:02:50.033) 0:12:02.965 ********** 2026-03-20 16:01:27,341 p=31742 u=zuul n=ansible | =============================================================================== 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | install_yamls_makes --------------------------------------------------- 330.12s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ansible.builtin.command ----------------------------------------------- 170.36s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | run_hook --------------------------------------------------------------- 94.19s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | openshift_obs ---------------------------------------------------------- 52.79s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ci_setup --------------------------------------------------------------- 39.68s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | repo_setup ------------------------------------------------------------- 18.05s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | openshift_setup --------------------------------------------------------- 5.13s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | openshift_login --------------------------------------------------------- 4.22s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | install_yamls ----------------------------------------------------------- 3.82s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | cifmw_setup ------------------------------------------------------------- 1.55s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | gather_facts ------------------------------------------------------------ 1.24s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | discover_latest_image --------------------------------------------------- 0.61s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | install_ca -------------------------------------------------------------- 0.45s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | networking_mapper ------------------------------------------------------- 0.30s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ansible.builtin.set_fact ------------------------------------------------ 0.13s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ansible.builtin.assert -------------------------------------------------- 0.11s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ansible.builtin.include_role -------------------------------------------- 0.11s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ansible.builtin.include_vars -------------------------------------------- 0.05s 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2026-03-20 16:01:27,342 p=31742 u=zuul n=ansible | total ----------------------------------------------------------------- 722.90s 2026-03-20 16:01:29,945 p=40515 u=zuul n=ansible | PLAY [controller] ************************************************************** 2026-03-20 16:01:29,975 p=40515 u=zuul n=ansible | TASK [Run hooks before running kuttl tests name=run_hook] ********************** 2026-03-20 16:01:29,975 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:29 +0000 (0:00:00.045) 0:00:00.045 ********** 2026-03-20 16:01:29,975 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:29 +0000 (0:00:00.043) 0:00:00.043 ********** 2026-03-20 16:01:30,019 p=40515 u=zuul n=ansible | TASK [run_hook : Assert parameters are valid quiet=True, that=['_list_hooks is not string', '_list_hooks is not mapping', '_list_hooks is iterable', '(hooks | default([])) is not string', '(hooks | default([])) is not mapping', '(hooks | default([])) is iterable']] *** 2026-03-20 16:01:30,019 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.044) 0:00:00.089 ********** 2026-03-20 16:01:30,019 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.044) 0:00:00.087 ********** 2026-03-20 16:01:30,077 p=40515 u=zuul n=ansible | ok: [controller] 2026-03-20 16:01:30,087 p=40515 u=zuul n=ansible | TASK [run_hook : Assert single hooks are all mappings quiet=True, that=['_not_mapping_hooks | length == 0'], msg=All single hooks must be a list of mappings or a mapping.] *** 2026-03-20 16:01:30,087 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.068) 0:00:00.157 ********** 2026-03-20 16:01:30,087 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.068) 0:00:00.155 ********** 2026-03-20 16:01:30,177 p=40515 u=zuul n=ansible | ok: [controller] 2026-03-20 16:01:30,189 p=40515 u=zuul n=ansible | TASK [run_hook : Loop on hooks for pre_kuttl_from_operator _raw_params={{ hook.type }}.yml] *** 2026-03-20 16:01:30,189 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.102) 0:00:00.259 ********** 2026-03-20 16:01:30,190 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.102) 0:00:00.258 ********** 2026-03-20 16:01:30,309 p=40515 u=zuul n=ansible | skipping: [controller] 2026-03-20 16:01:30,326 p=40515 u=zuul n=ansible | TASK [run kuttl test suite from operator Makefile chdir={{ ansible_user_dir }}/{{ operator_basedir }}, _raw_params=make kuttl-test-run] *** 2026-03-20 16:01:30,327 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.137) 0:00:00.396 ********** 2026-03-20 16:01:30,327 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:01:30 +0000 (0:00:00.137) 0:00:00.395 ********** 2026-03-20 16:26:25,879 p=40515 u=zuul n=ansible | fatal: [controller]: FAILED! => changed: true cmd: - make - kuttl-test-run delta: '0:24:54.158699' end: '2026-03-20 16:26:24.849894' msg: non-zero return code rc: 2 start: '2026-03-20 16:01:30.691195' stderr: |- Warning: spec.privateKey.rotationPolicy: In cert-manager >= v1.18.0, the default value changed from `Never` to `Always`. Warning: The 'cinderBackup' field is deprecated and will be removed in a future release. Please migrate to 'cinderBackups'. make: *** [Makefile:444: kuttl-test-run] Error 1 stderr_lines: - 'Warning: spec.privateKey.rotationPolicy: In cert-manager >= v1.18.0, the default value changed from `Never` to `Always`.' - 'Warning: The ''cinderBackup'' field is deprecated and will be removed in a future release. Please migrate to ''cinderBackups''.' - 'make: *** [Makefile:444: kuttl-test-run] Error 1' stdout: "oc kuttl test --v 1 --start-kind=false --config test/kuttl/test-suites/default/config.yaml\n=== RUN kuttl\n harness.go:463: starting setup\n harness.go:255: running tests using configured kubeconfig.\n harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443\n harness.go:363: running tests\n harness.go:75: going to run test suite with timeout of 300 seconds for each step\n harness.go:375: testsuite: test/kuttl/test-suites/default/ has 11 tests\n=== RUN kuttl/harness\n=== RUN kuttl/harness/appcred-tests\n=== PAUSE kuttl/harness/appcred-tests\n=== RUN \ kuttl/harness/common\n=== PAUSE kuttl/harness/common\n=== RUN kuttl/harness/deps\n=== PAUSE kuttl/harness/deps\n=== RUN kuttl/harness/watcher\n=== PAUSE kuttl/harness/watcher\n=== RUN kuttl/harness/watcher-api-scaling\n=== PAUSE kuttl/harness/watcher-api-scaling\n=== RUN kuttl/harness/watcher-cinder\n=== PAUSE kuttl/harness/watcher-cinder\n=== RUN kuttl/harness/watcher-notification\n=== PAUSE kuttl/harness/watcher-notification\n=== RUN kuttl/harness/watcher-rmquser\n=== PAUSE kuttl/harness/watcher-rmquser\n=== RUN kuttl/harness/watcher-tls\n=== PAUSE kuttl/harness/watcher-tls\n=== RUN kuttl/harness/watcher-tls-certs-change\n=== PAUSE kuttl/harness/watcher-tls-certs-change\n=== RUN kuttl/harness/watcher-topology\n=== PAUSE kuttl/harness/watcher-topology\n=== CONT kuttl/harness/appcred-tests\n logger.go:42: 16:01:30 | appcred-tests | Skipping creation of user-supplied namespace: watcher-kuttl-default\n \ logger.go:42: 16:01:30 | appcred-tests/0-cleanup | starting test step 0-cleanup\n \ logger.go:42: 16:01:30 | appcred-tests/0-cleanup | test step completed 0-cleanup\n \ logger.go:42: 16:01:30 | appcred-tests/1-deploy | starting test step 1-deploy\n \ logger.go:42: 16:01:31 | appcred-tests/1-deploy | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:01:31 | appcred-tests/1-deploy | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n oc wait -n \"${NS}\" watcher watcher-kuttl --for=condition=Ready --timeout=600s]\n logger.go:42: 16:02:31 | appcred-tests/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met\n logger.go:42: 16:02:31 | appcred-tests/1-deploy | test step completed 1-deploy\n \ logger.go:42: 16:02:31 | appcred-tests/2-deploy-appcred | starting test step 2-deploy-appcred\n logger.go:42: 16:02:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ old_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ old_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ old_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n oc create configmap appcred-watcher-pre \\\n \ --from-literal=api_uid=\"${old_api_uid}\" \\\n --from-literal=applier_uid=\"${old_applier_uid}\" \\\n --from-literal=decision_engine_uid=\"${old_de_uid}\" \\\n --dry-run=client -o yaml | oc apply -n \"${NS}\" -f -\n \n cat <<'EOF' | oc apply -n \"${NS}\" -f -\n apiVersion: keystone.openstack.org/v1beta1\n kind: KeystoneApplicationCredential\n metadata:\n name: ac-watcher\n spec:\n \ secret: osp-secret\n passwordSelector: WatcherPassword\n userName: watcher\n roles:\n - admin\n - service\n unrestricted: false\n EOF\n \n oc patch watcher watcher-kuttl -n \"${NS}\" --type=merge -p '{\"spec\":{\"auth\":{\"applicationCredentialSecret\":\"ac-watcher-secret\"}}}']\n \ logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | configmap/appcred-watcher-pre created\n logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | keystoneapplicationcredential.keystone.openstack.org/ac-watcher created\n logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:32 | appcred-tests/2-deploy-appcred | error: timed out waiting for the condition on keystoneapplicationcredentials/ac-watcher\n logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:07:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:07:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:08:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:08:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:08:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:11:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:11:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:11:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:12:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:12:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:16:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:16:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail\n NS=\"${NAMESPACE}\"\n \n \ echo \"Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\"\n \ oc wait -n \"${NS}\" appcred/ac-watcher --for=condition=Ready --timeout=300s\n \ \n ac_id=$(oc get -n \"${NS}\" appcred/ac-watcher -o jsonpath='{.status.acID}')\n \ if [ -z \"${ac_id}\" ]; then\n echo \"ERROR: appcred/ac-watcher.status.acID is empty\"\n exit 1\n fi\n echo \"ac-watcher.status.acID=${ac_id}\"\n \ \n oc get -n \"${NS}\" secret/ac-watcher-secret >/dev/null\n secret_ac_id=$(oc get -n \"${NS}\" secret/ac-watcher-secret -o jsonpath='{.data.AC_ID}' | base64 -d)\n \ if [ \"${secret_ac_id}\" != \"${ac_id}\" ]; then\n echo \"ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})\"\n exit 1\n fi\n echo \"✓ Secret AC_ID matches appcred.status.acID\"\n \n \ echo \"Waiting for watcher rollouts...\"\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-api --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-applier --timeout=300s\n oc rollout status -n \"${NS}\" statefulset/watcher-kuttl-decision-engine --timeout=300s\n \n old_api_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.api_uid}')\n \ old_applier_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.applier_uid}')\n \ old_de_uid=$(oc get -n \"${NS}\" configmap/appcred-watcher-pre -o jsonpath='{.data.decision_engine_uid}')\n \ \n new_api_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-api-0 -o jsonpath='{.metadata.uid}')\n \ new_applier_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-applier-0 -o jsonpath='{.metadata.uid}')\n \ new_de_uid=$(oc get pod -n \"${NS}\" watcher-kuttl-decision-engine-0 -o jsonpath='{.metadata.uid}')\n \n if [ \"${old_api_uid}\" = \"${new_api_uid}\" ] || [ \"${old_applier_uid}\" = \"${new_applier_uid}\" ] || [ \"${old_de_uid}\" = \"${new_de_uid}\" ]; then\n echo \"ERROR: expected watcher pods to restart after appcred secret became available\"\n echo \" api: ${old_api_uid} -> ${new_api_uid}\"\n echo \" applier: ${old_applier_uid} -> ${new_applier_uid}\"\n \ echo \" decision-engine: ${old_de_uid} -> ${new_de_uid}\"\n exit 1\n fi\n echo \"✓ watcher pods restarted after appcred secret became available\"\n \n echo \"Checking watcher config contains application_credential_id...\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-api-0 -c watcher-api -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-applier-0 -c watcher-applier -- \\\n \ bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n \ oc exec -n \"${NS}\" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \\\n bash -c \"grep -q \\\"^application_credential_id = ${ac_id}$\\\" /etc/watcher/watcher.conf.d/00-default.conf\"\n echo \"✓ watcher config contains expected application_credential_id\"]\n logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...\n logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org \"ac-watcher\" not found\n logger.go:42: 16:17:33 | appcred-tests/2-deploy-appcred | test step failed 2-deploy-appcred\n case.go:396: failed in step 2-deploy-appcred\n \ case.go:398: command \"NS=\\\"${NAMESPACE}\\\"\\\\n echo \\\"Waiting for KeystoneApplicationCredential...\" failed, exit status 1\n logger.go:42: 16:17:33 | appcred-tests | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-notification\n logger.go:42: 16:17:33 | watcher-notification | Skipping creation of user-supplied namespace: watcher-kuttl-default\n \ logger.go:42: 16:17:33 | watcher-notification/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:17:33 | watcher-notification/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | starting test step 1-deploy-with-notification\n logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | Now using project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | error: Internal error occurred: error executing command in container: container is not created or running\n logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | ++ echo\n logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | + '[' 0 == 1 ']'\n logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:42 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:46 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:50 | watcher-notification/1-deploy-with-notification | + APIPOD=\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ echo\n logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + '[' 0 == 1 ']'\n \ logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:17:55 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:55 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:18:01 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:18:01 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+=') == 1 ]\n else\n exit 1\n fi\n ]\n logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default\n \ logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ head -1\n logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ grep -v '^$'\n logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | ++ grep -czPo '\\[oslo_messaging_notifications\\]\\s+driver\\s+=\\s+messagingv2\\s+transport_url\\s+='\n \ logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = messagingv2 transport_url = 'rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1' '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + '[' 1 == 1 ']'\n logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | test step completed 1-deploy-with-notification\n logger.go:42: 16:18:04 | watcher-notification/2-cleanup-watcher | starting test step 2-cleanup-watcher\n logger.go:42: 16:18:11 | watcher-notification/2-cleanup-watcher | test step completed 2-cleanup-watcher\n logger.go:42: 16:18:11 | watcher-notification | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-topology\n \ logger.go:42: 16:18:11 | watcher-topology | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:18:11 | watcher-topology/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:18:11 | watcher-topology/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | starting test step 1-deploy-with-topology\n logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | Topology:watcher-kuttl-default/watcher-api created\n logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:18:36 | watcher-topology/1-deploy-with-topology | test step completed 1-deploy-with-topology\n logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | starting test step 2-cleanup-watcher\n logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:18:39 | watcher-topology/2-cleanup-watcher | + '[' 1 == 0 ']'\n logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:18:42 | watcher-topology/2-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:18:42 | watcher-topology/2-cleanup-watcher | test step completed 2-cleanup-watcher\n logger.go:42: 16:18:42 | watcher-topology | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-tls-certs-change\n \ logger.go:42: 16:18:42 | watcher-tls-certs-change | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:18:42 | watcher-tls-certs-change/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:18:42 | watcher-tls-certs-change/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | starting test step 1-deploy-with-tlse\n logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-internal-svc created\n logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-public-svc created\n logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n \ # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:49 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:49 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:50 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:50 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods \"watcher-kuttl-api-0\" not found\n logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:01 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:19:01 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n \ public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${public_svc_cert}\" != \"${public_secret_cert}\" ]; then\n exit 1\n fi\n \n internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n \ internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n if [ \"${internal_svc_cert}\" != \"${internal_secret_cert}\" ]; then\n exit 1\n fi\n ]\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | test step completed 1-deploy-with-tlse\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | starting test step 2-change-public-svc-certificate\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c oc patch Certificate -n $NAMESPACE watcher-public-svc --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/dnsNames\", \"value\":['watcher-public.watcher-kuttl-default.svc', 'watcher-public.watcher-kuttl-default.svc.cluster.local']}]'\n ]\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | certificate.cert-manager.io/watcher-public-svc patched\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail\n svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${svc_cert}\" != \"${secret_cert}\" ]; then\n exit 1\n fi\n \ ]\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ base64 --decode\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n \ logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + exit 1\n logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail\n svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${svc_cert}\" != \"${secret_cert}\" ]; then\n exit 1\n fi\n \ ]\n logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=\n \ logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail\n svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${svc_cert}\" != \"${secret_cert}\" ]; then\n exit 1\n fi\n \ ]\n logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=\n \ logger.go:42: 16:19:11 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail\n svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)\n secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${svc_cert}\" != \"${secret_cert}\" ]; then\n exit 1\n fi\n \ ]\n logger.go:42: 16:19:11 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ base64 --decode\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | test step completed 2-change-public-svc-certificate\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | starting test step 3-change-internal-svc-certificate\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | running command: [sh -c oc patch Certificate -n $NAMESPACE watcher-internal-svc --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/dnsNames\", \"value\":['watcher-internal.watcher-kuttl-default.svc', 'watcher-internal.watcher-kuttl-default.svc.cluster.local']}]'\n ]\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | certificate.cert-manager.io/watcher-internal-svc patched\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | running command: [sh -c set -euxo pipefail\n svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)\n secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath='{.data.tls\\.crt}' | base64 --decode)\n # ensure that the svc secret and cert secret match\n \ if [ \"${svc_cert}\" != \"${secret_cert}\" ]; then\n exit 1\n fi\n \ ]\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + svc_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----'\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ base64 --decode\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o 'jsonpath={.data.tls\\.crt}'\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + secret_cert='-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----'\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + '[' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----' '!=' '-----BEGIN CERTIFICATE-----\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE\n \ logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----' ']'\n logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | test step completed 3-change-internal-svc-certificate\n logger.go:42: 16:19:12 | watcher-tls-certs-change/4-cleanup-watcher | starting test step 4-cleanup-watcher\n \ logger.go:42: 16:19:19 | watcher-tls-certs-change/4-cleanup-watcher | test step completed 4-cleanup-watcher\n logger.go:42: 16:19:19 | watcher-tls-certs-change/5-clenaup-certs | starting test step 5-clenaup-certs\n logger.go:42: 16:19:19 | watcher-tls-certs-change/5-clenaup-certs | test step completed 5-clenaup-certs\n logger.go:42: 16:19:19 | watcher-tls-certs-change | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-tls\n logger.go:42: 16:19:19 | watcher-tls | Skipping creation of user-supplied namespace: watcher-kuttl-default\n \ logger.go:42: 16:19:19 | watcher-tls/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:19:19 | watcher-tls/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | starting test step 1-deploy-with-tlse\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-internal-svc created\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-public-svc created\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:22 | watcher-tls/1-deploy-with-tlse | + '[' 0 == 1 ']'\n logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:25 | watcher-tls/1-deploy-with-tlse | + '[' 0 == 1 ']'\n logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ grep watcher\n logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ awk '{print $1}'\n logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + '[' -n '' ']'\n \ logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ grep watcher\n logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ awk '{print $1}'\n logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n \ logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n \ logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + '[' 2 == 2 ']'\n logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + grep infra-optim\n logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | ++ grep -c https\n logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:19:39 | watcher-tls/1-deploy-with-tlse | + '[' 0 == 2 ']'\n logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ grep watcher\n logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ awk '{print $1}'\n logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n \ logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + '[' 2 == 2 ']'\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + grep infra-optim\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ grep -c https\n logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + '[' 2 == 2 ']'\n logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + '[' '' == '' ']'\n \ logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + exit 0\n logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail\n \ oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n # check that both endpoints have https set\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | ++ grep -c '^watcher'\n logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ grep watcher\n logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ awk '{print $1}'\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n \ logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1\n \ logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + '[' 1 == 1 ']'\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n \ logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ base64 -d\n logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + '[' 2 == 2 ']'\n logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + grep infra-optim\n logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | ++ grep -c https\n logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + '[' 2 == 2 ']'\n logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + '[' '' == '' ']'\n \ logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + exit 0\n logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | test step completed 1-deploy-with-tlse\n \ logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | starting test step 2-patch-mtls\n \ logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail\n oc patch oscp -n $NAMESPACE openstack --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/memcached/templates/memcached/tls/mtls/sslVerifyMode\", \"value\": \"Request\"}]'\n ]\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + oc patch oscp -n watcher-kuttl-default openstack --type=json '-p=[{\"op\": \"replace\", \"path\": \"/spec/memcached/templates/memcached/tls/mtls/sslVerifyMode\", \"value\": \"Request\"}]'\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | openstackcontrolplane.core.openstack.org/openstack patched\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail\n \n oc project ${NAMESPACE}\n # Get pod names for each watcher service\n APIPOD=$(oc get pods -l service=watcher-api -o jsonpath='{.items[0].metadata.name}')\n APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath='{.items[0].metadata.name}')\n DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath='{.items[0].metadata.name}')\n \n \ # Verify memcached mTLS config parameters in watcher-api config\n if [ -n \"${APIPOD}\" ]; then\n echo \"Checking watcher-api config...\"\n \ [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n # Verify mTLS config parameters in memcached backend config\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-applier config\n if [ -n \"${APPLIERPOD}\" ]; then\n echo \"Checking watcher-applier config...\"\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-decision-engine config\n if [ -n \"${DECISIONENGINEPOD}\" ]; then\n \ echo \"Checking watcher-decision-engine config...\"\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n ]\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o 'jsonpath={.items[0].metadata.name}'\n \ logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0\n \ logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + echo 'Checking watcher-api config...'\n \ logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | Checking watcher-api config...\n \ logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt '\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | error: Internal error occurred: error executing command in container: container is not created or running\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | ++ echo\n logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + '[' 0 == 1 ']'\n logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail\n \n oc project ${NAMESPACE}\n \ # Get pod names for each watcher service\n APIPOD=$(oc get pods -l service=watcher-api -o jsonpath='{.items[0].metadata.name}')\n APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath='{.items[0].metadata.name}')\n DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath='{.items[0].metadata.name}')\n \ \n # Verify memcached mTLS config parameters in watcher-api config\n \ if [ -n \"${APIPOD}\" ]; then\n echo \"Checking watcher-api config...\"\n \ [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n # Verify mTLS config parameters in memcached backend config\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-applier config\n if [ -n \"${APPLIERPOD}\" ]; then\n echo \"Checking watcher-applier config...\"\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-decision-engine config\n if [ -n \"${DECISIONENGINEPOD}\" ]; then\n \ echo \"Checking watcher-decision-engine config...\"\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n ]\n logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default\n logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o 'jsonpath={.items[0].metadata.name}'\n \ logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0\n \ logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + echo 'Checking watcher-api config...'\n \ logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | Checking watcher-api config...\n \ logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt '\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | ++ echo\n logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + '[' 0 == 1 ']'\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail\n \n oc project ${NAMESPACE}\n \ # Get pod names for each watcher service\n APIPOD=$(oc get pods -l service=watcher-api -o jsonpath='{.items[0].metadata.name}')\n APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath='{.items[0].metadata.name}')\n DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath='{.items[0].metadata.name}')\n \ \n # Verify memcached mTLS config parameters in watcher-api config\n \ if [ -n \"${APIPOD}\" ]; then\n echo \"Checking watcher-api config...\"\n \ [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n # Verify mTLS config parameters in memcached backend config\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-applier config\n if [ -n \"${APPLIERPOD}\" ]; then\n echo \"Checking watcher-applier config...\"\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n \n # Verify memcached mTLS config parameters in watcher-decision-engine config\n if [ -n \"${DECISIONENGINEPOD}\" ]; then\n \ echo \"Checking watcher-decision-engine config...\"\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt \") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_keyfile = /etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"memcache_tls_enabled = true\") == 1 ]\n \n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_certfile=/etc/pki/tls/certs/mtls.crt\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_keyfile=/etc/pki/tls/private/mtls.key\") == 1 ]\n [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c \"tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\") == 1 ]\n else\n \ exit 1\n fi\n ]\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o 'jsonpath={.items[0].metadata.name}'\n \ logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0\n \ logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o 'jsonpath={.items[0].metadata.name}'\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + echo 'Checking watcher-api config...'\n \ logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | Checking watcher-api config...\n \ logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt '\n logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_keyfile = /etc/pki/tls/private/mtls.key'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_enabled = true'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt\n \ logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key\n \ logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\n \ logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + '[' -n watcher-kuttl-applier-0 ']'\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + echo 'Checking watcher-applier config...'\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | Checking watcher-applier config...\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt '\n logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_keyfile = /etc/pki/tls/private/mtls.key'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_enabled = true'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt\n \ logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key\n \ logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\n \ logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' -n watcher-kuttl-decision-engine-0 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + echo 'Checking watcher-decision-engine config...'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | Checking watcher-decision-engine config...\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt '\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_keyfile = /etc/pki/tls/private/mtls.key'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt'\n logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c 'memcache_tls_enabled = true'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | test step completed 2-patch-mtls\n logger.go:42: 16:20:04 | watcher-tls/3-disable-podlevel-tls | starting test step 3-disable-podlevel-tls\n logger.go:42: 16:20:04 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/tls/api\", \"value\":{ \"internal\": {}, \"public\": {} }}]'\n ]\n logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n \ oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n \ logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:12 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 0 ']'\n logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n \ # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n \ fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:17 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:17 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n logger.go:42: 16:20:20 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 0 ']'\n logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n \ # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n \ fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n \ logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:27 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 0 ']'\n logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n \ # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n \ fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n logger.go:42: 16:20:34 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 0 ']'\n logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n \ # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n \ fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + '[' 0 == 0 ']'\n logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + grep public\n logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n \ logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n \ logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + '[' '' == '' ']'\n logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + exit 0\n logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail\n \ oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # check that watcher internal endpoint does not use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]\n # check that watcher public endpoint does use https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | ++ grep -c '^watcher'\n logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher\n logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ awk '{print $1}'\n logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + grep internal\n \ logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n \ logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n \ logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + '[' 0 == 0 ']'\n logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + grep public\n logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https\n logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim\n logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list\n \ logger.go:42: 16:20:59 | watcher-tls/3-disable-podlevel-tls | + '[' 1 == 1 ']'\n \ logger.go:42: 16:20:59 | watcher-tls/3-disable-podlevel-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | + '[' '' == '' ']'\n logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | + exit 0\n logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | test step completed 3-disable-podlevel-tls\n \ logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | starting test step 4-deploy-without-route\n logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/override\", \"value\":{\"service\": { \"internal\": {}, \"public\": { \"metadata\": { \"annotations\": { \"metallb.universe.tf/address-pool\": \"ctlplane\", \"metallb.universe.tf/allow-shared-ip\": \"ctlplane\" } }, \"spec\": { \"type\": \"LoadBalancer\" } } } }}]'\n ]\n logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | ++ grep -c '^watcher'\n logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | + '[' 1 == 1 ']'\n logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ grep watcher\n logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ awk '{print $1}'\n logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:21:05 | watcher-tls/4-deploy-without-route | + '[' '' == '' ']'\n logger.go:42: 16:21:05 | watcher-tls/4-deploy-without-route | + exit 0\n logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | running command: [sh -c set -euxo pipefail\n \ oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | ++ grep -c '^watcher'\n logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | + '[' 1 == 1 ']'\n logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ awk '{print $1}'\n logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ grep watcher\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + '[' '' == '' ']'\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + exit 0\n logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | test step completed 4-deploy-without-route\n \ logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | starting test step 5-disable-tls\n \ logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/override\", \"value\":{}}]'\n ]\n logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n # check that no watcher endpoint uses https\n \ oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 0 ]\n ]\n logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | ++ grep -c '^watcher'\n logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ awk '{print $1}'\n logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ grep watcher\n logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:21:14 | watcher-tls/5-disable-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n \ logger.go:42: 16:21:14 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + '[' '' == '' ']'\n logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + exit 0\n logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | running command: [sh -c set -euxo pipefail\n oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ # check that no watcher endpoint uses https\n oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 0 ]\n ]\n logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | ++ grep -c '^watcher'\n logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | + '[' 1 == 1 ']'\n logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ grep watcher\n \ logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ awk '{print $1}'\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + '[' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 ']'\n \ logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + '[' '' == '' ']'\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + exit 0\n logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | test step completed 5-disable-tls\n logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | starting test step 6-cleanup-watcher\n logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:21:23 | watcher-tls/6-cleanup-watcher | + '[' 1 == 0 ']'\n logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:21:26 | watcher-tls/6-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:21:27 | watcher-tls/6-cleanup-watcher | test step completed 6-cleanup-watcher\n logger.go:42: 16:21:27 | watcher-tls/7-cleanup-certs | starting test step 7-cleanup-certs\n logger.go:42: 16:21:27 | watcher-tls/7-cleanup-certs | test step completed 7-cleanup-certs\n logger.go:42: 16:21:27 | watcher-tls | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-rmquser\n logger.go:42: 16:21:27 | watcher-rmquser | Skipping creation of user-supplied namespace: watcher-kuttl-default\n \ logger.go:42: 16:21:27 | watcher-rmquser/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:21:27 | watcher-rmquser/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | starting test step 1-deploy\n logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | running command: [sh -c set -euxo pipefail\n \n \ # Wait for Watcher to be Ready\n kubectl wait --for=condition=Ready watcher/watcher-kuttl -n $NAMESPACE --timeout=300s\n \n # Verify WatcherNotificationTransportURLReady condition exists and is True\n kubectl get watcher watcher-kuttl -n $NAMESPACE -o jsonpath='{.status.conditions[?(@.type==\"WatcherNotificationTransportURLReady\")].status}' | grep -q \"True\"\n echo \"WatcherNotificationTransportURLReady condition is True\"\n \n # Count TransportURL CRs - should be exactly 2 (one for messaging, one for notifications)\n transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep \"watcher-kuttl-watcher-transport\" | wc -l)\n notification_transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep \"watcher-kuttl-watcher-notification\" | wc -l)\n \n if [ \"$transport_count\" -ne \"1\" ]; then\n echo \"Expected 1 watcher-transport TransportURL, found $transport_count\"\n exit 1\n fi\n \n if [ \"$notification_transport_count\" -ne \"1\" ]; then\n echo \"Expected 1 notification-transport TransportURL, found $notification_transport_count\"\n exit 1\n fi\n \n echo \"Correctly found 2 TransportURLs (separate clusters: transport and notification)\"\n \ \n # Verify watcher-transport has correct user and vhost\n transport_user=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath='{.spec.username}')\n \ transport_vhost=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath='{.spec.vhost}')\n if [ \"$transport_user\" != \"watcher-rpc\" ]; then\n echo \"Expected watcher-transport username 'watcher-rpc', found '$transport_user'\"\n exit 1\n fi\n if [ \"$transport_vhost\" != \"watcher-rpc\" ]; then\n echo \"Expected watcher-transport vhost 'watcher-rpc', found '$transport_vhost'\"\n exit 1\n fi\n echo \"Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)\"\n \n # Verify notification-transport has correct user and vhost\n notif_user=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath='{.spec.username}')\n notif_vhost=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath='{.spec.vhost}')\n \ if [ \"$notif_user\" != \"watcher-notifications\" ]; then\n echo \"Expected notification-transport username 'watcher-notifications', found '$notif_user'\"\n \ exit 1\n fi\n if [ \"$notif_vhost\" != \"watcher-notifications\" ]; then\n echo \"Expected notification-transport vhost 'watcher-notifications', found '$notif_vhost'\"\n exit 1\n fi\n echo \"Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)\"\n \ \n # Verify that watcher.conf contains the notifications transport_url\n \ WATCHER_API_POD=$(kubectl get pods -n $NAMESPACE -l \"service=watcher-api\" -o custom-columns=:metadata.name --no-headers | grep -v ^$ | head -1)\n if [ -z \"${WATCHER_API_POD}\" ]; then\n echo \"No watcher-api pod found\"\n \ exit 1\n fi\n # Verify RPC transport_url in DEFAULT section\n \ rpc_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -E '^\\[DEFAULT\\]' -A 50 | grep 'transport_url' | head -1 || true)\n if [ -z \"$rpc_transport_url\" ]; then\n echo \"transport_url not found in DEFAULT section\"\n exit 1\n fi\n echo \"Found RPC transport_url: $rpc_transport_url\"\n \n \ # Verify the RPC transport_url contains the correct vhost (watcher-rpc)\n \ if ! echo \"$rpc_transport_url\" | grep -q '/watcher-rpc'; then\n echo \"RPC transport_url does not contain expected vhost '/watcher-rpc'\"\n exit 1\n fi\n echo \"Successfully verified vhost 'watcher-rpc' in RPC transport_url\"\n \ \n # Verify the RPC transport_url contains the correct username (watcher-rpc)\n \ if ! echo \"$rpc_transport_url\" | grep -q 'watcher-rpc:'; then\n echo \"RPC transport_url does not contain expected username 'watcher-rpc:'\"\n exit 1\n fi\n echo \"Successfully verified username 'watcher-rpc' in RPC transport_url\"\n \n # Verify oslo_messaging_notifications section has transport_url configured\n notif_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -A 5 '\\[oslo_messaging_notifications\\]' | grep 'transport_url' || true)\n \ if [ -z \"$notif_transport_url\" ]; then\n echo \"transport_url not found in oslo_messaging_notifications section\"\n exit 1\n fi\n \ echo \"Found notifications transport_url: $notif_transport_url\"\n \n \ # Verify the notifications transport_url contains the correct vhost (watcher-notifications)\n \ if ! echo \"$notif_transport_url\" | grep -q '/watcher-notifications'; then\n \ echo \"Notifications transport_url does not contain expected vhost '/watcher-notifications'\"\n \ exit 1\n fi\n echo \"Successfully verified vhost 'watcher-notifications' in notifications transport_url\"\n \n # Verify the notifications transport_url contains the correct username (watcher-notifications)\n if ! echo \"$notif_transport_url\" | grep -q 'watcher-notifications:'; then\n echo \"Notifications transport_url does not contain expected username 'watcher-notifications:'\"\n exit 1\n \ fi\n echo \"Successfully verified username 'watcher-notifications' in notifications transport_url\"\n \n exit 0\n ]\n logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | + kubectl wait --for=condition=Ready watcher/watcher-kuttl -n watcher-kuttl-default --timeout=300s\n logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met\n logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | + grep -q True\n logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | + kubectl get watcher watcher-kuttl -n watcher-kuttl-default -o 'jsonpath={.status.conditions[?(@.type==\"WatcherNotificationTransportURLReady\")].status}'\n \ logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo 'WatcherNotificationTransportURLReady condition is True'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | WatcherNotificationTransportURLReady condition is True\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-transport\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ wc -l\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_count=1\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ wc -l\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-notification\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notification_transport_count=1\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' 1 -ne 1 ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' 1 -ne 1 ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo 'Correctly found 2 TransportURLs (separate clusters: transport and notification)'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Correctly found 2 TransportURLs (separate clusters: transport and notification)\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o 'jsonpath={.spec.username}'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_user=watcher-rpc\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o 'jsonpath={.spec.vhost}'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_vhost=watcher-rpc\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' watcher-rpc '!=' watcher-rpc ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' watcher-rpc '!=' watcher-rpc ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo 'Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)'\n \ logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o 'jsonpath={.spec.username}'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notif_user=watcher-notifications\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o 'jsonpath={.spec.vhost}'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notif_vhost=watcher-notifications\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' watcher-notifications '!=' watcher-notifications ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + '[' watcher-notifications '!=' watcher-notifications ']'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo 'Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)\n \ logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep -v '^$'\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ head -1\n logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get pods -n watcher-kuttl-default -l service=watcher-api -o custom-columns=:metadata.name --no-headers\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + WATCHER_API_POD=watcher-kuttl-api-0\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + '[' -z watcher-kuttl-api-0 ']'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep -E '^\\[DEFAULT\\]' -A 50\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep transport_url\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ head -1\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + rpc_transport_url='transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + '[' -z 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1' ']'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q /watcher-rpc\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Successfully verified vhost '\\''watcher-rpc'\\'' in RPC transport_url'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified vhost 'watcher-rpc' in RPC transport_url\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q watcher-rpc:\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Successfully verified username '\\''watcher-rpc'\\'' in RPC transport_url'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified username 'watcher-rpc' in RPC transport_url\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep -A 5 '\\[oslo_messaging_notifications\\]'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep transport_url\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + notif_transport_url='transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + '[' -z 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1' ']'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q /watcher-notifications\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Successfully verified vhost '\\''watcher-notifications'\\'' in notifications transport_url'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified vhost 'watcher-notifications' in notifications transport_url\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q watcher-notifications:\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo 'Successfully verified username '\\''watcher-notifications'\\'' in notifications transport_url'\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified username 'watcher-notifications' in notifications transport_url\n logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + exit 0\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | running command: [sh -c set -euxo pipefail\n \n # Wait for Watcher to be Ready\n kubectl wait --for=condition=Ready watcher/watcher-kuttl -n $NAMESPACE --timeout=300s\n \ \n # Verify WatcherNotificationTransportURLReady condition exists and is True\n kubectl get watcher watcher-kuttl -n $NAMESPACE -o jsonpath='{.status.conditions[?(@.type==\"WatcherNotificationTransportURLReady\")].status}' | grep -q \"True\"\n echo \"WatcherNotificationTransportURLReady condition is True\"\n \n # Count TransportURL CRs - should be exactly 2 (one for messaging, one for notifications)\n transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep \"watcher-kuttl-watcher-transport\" | wc -l)\n notification_transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep \"watcher-kuttl-watcher-notification\" | wc -l)\n \n if [ \"$transport_count\" -ne \"1\" ]; then\n echo \"Expected 1 watcher-transport TransportURL, found $transport_count\"\n exit 1\n fi\n \n if [ \"$notification_transport_count\" -ne \"1\" ]; then\n echo \"Expected 1 notification-transport TransportURL, found $notification_transport_count\"\n exit 1\n fi\n \n echo \"Correctly found 2 TransportURLs (separate clusters: transport and notification)\"\n \ \n # Verify watcher-transport has correct user and vhost\n transport_user=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath='{.spec.username}')\n \ transport_vhost=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath='{.spec.vhost}')\n if [ \"$transport_user\" != \"watcher-rpc\" ]; then\n echo \"Expected watcher-transport username 'watcher-rpc', found '$transport_user'\"\n exit 1\n fi\n if [ \"$transport_vhost\" != \"watcher-rpc\" ]; then\n echo \"Expected watcher-transport vhost 'watcher-rpc', found '$transport_vhost'\"\n exit 1\n fi\n echo \"Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)\"\n \n # Verify notification-transport has correct user and vhost\n notif_user=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath='{.spec.username}')\n notif_vhost=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath='{.spec.vhost}')\n \ if [ \"$notif_user\" != \"watcher-notifications\" ]; then\n echo \"Expected notification-transport username 'watcher-notifications', found '$notif_user'\"\n \ exit 1\n fi\n if [ \"$notif_vhost\" != \"watcher-notifications\" ]; then\n echo \"Expected notification-transport vhost 'watcher-notifications', found '$notif_vhost'\"\n exit 1\n fi\n echo \"Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)\"\n \ \n # Verify that watcher.conf contains the notifications transport_url\n \ WATCHER_API_POD=$(kubectl get pods -n $NAMESPACE -l \"service=watcher-api\" -o custom-columns=:metadata.name --no-headers | grep -v ^$ | head -1)\n if [ -z \"${WATCHER_API_POD}\" ]; then\n echo \"No watcher-api pod found\"\n \ exit 1\n fi\n # Verify RPC transport_url in DEFAULT section\n \ rpc_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -E '^\\[DEFAULT\\]' -A 50 | grep 'transport_url' | head -1 || true)\n if [ -z \"$rpc_transport_url\" ]; then\n echo \"transport_url not found in DEFAULT section\"\n exit 1\n fi\n echo \"Found RPC transport_url: $rpc_transport_url\"\n \n \ # Verify the RPC transport_url contains the correct vhost (watcher-rpc)\n \ if ! echo \"$rpc_transport_url\" | grep -q '/watcher-rpc'; then\n echo \"RPC transport_url does not contain expected vhost '/watcher-rpc'\"\n exit 1\n fi\n echo \"Successfully verified vhost 'watcher-rpc' in RPC transport_url\"\n \ \n # Verify the RPC transport_url contains the correct username (watcher-rpc)\n \ if ! echo \"$rpc_transport_url\" | grep -q 'watcher-rpc:'; then\n echo \"RPC transport_url does not contain expected username 'watcher-rpc:'\"\n exit 1\n fi\n echo \"Successfully verified username 'watcher-rpc' in RPC transport_url\"\n \n # Verify oslo_messaging_notifications section has transport_url configured\n notif_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -A 5 '\\[oslo_messaging_notifications\\]' | grep 'transport_url' || true)\n \ if [ -z \"$notif_transport_url\" ]; then\n echo \"transport_url not found in oslo_messaging_notifications section\"\n exit 1\n fi\n \ echo \"Found notifications transport_url: $notif_transport_url\"\n \n \ # Verify the notifications transport_url contains the correct vhost (watcher-notifications)\n \ if ! echo \"$notif_transport_url\" | grep -q '/watcher-notifications'; then\n \ echo \"Notifications transport_url does not contain expected vhost '/watcher-notifications'\"\n \ exit 1\n fi\n echo \"Successfully verified vhost 'watcher-notifications' in notifications transport_url\"\n \n # Verify the notifications transport_url contains the correct username (watcher-notifications)\n if ! echo \"$notif_transport_url\" | grep -q 'watcher-notifications:'; then\n echo \"Notifications transport_url does not contain expected username 'watcher-notifications:'\"\n exit 1\n \ fi\n echo \"Successfully verified username 'watcher-notifications' in notifications transport_url\"\n \n exit 0\n ]\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + kubectl wait --for=condition=Ready watcher/watcher-kuttl -n watcher-kuttl-default --timeout=300s\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + kubectl get watcher watcher-kuttl -n watcher-kuttl-default -o 'jsonpath={.status.conditions[?(@.type==\"WatcherNotificationTransportURLReady\")].status}'\n \ logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + grep -q True\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + echo 'WatcherNotificationTransportURLReady condition is True'\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | WatcherNotificationTransportURLReady condition is True\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-transport\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ wc -l\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + transport_count=1\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-notification\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ wc -l\n logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notification_transport_count=1\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' 1 -ne 1 ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' 1 -ne 1 ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Correctly found 2 TransportURLs (separate clusters: transport and notification)'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Correctly found 2 TransportURLs (separate clusters: transport and notification)\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o 'jsonpath={.spec.username}'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + transport_user=watcher-rpc\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o 'jsonpath={.spec.vhost}'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + transport_vhost=watcher-rpc\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' watcher-rpc '!=' watcher-rpc ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' watcher-rpc '!=' watcher-rpc ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)'\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o 'jsonpath={.spec.username}'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notif_user=watcher-notifications\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o 'jsonpath={.spec.vhost}'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notif_vhost=watcher-notifications\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' watcher-notifications '!=' watcher-notifications ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' watcher-notifications '!=' watcher-notifications ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -v '^$'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get pods -n watcher-kuttl-default -l service=watcher-api -o custom-columns=:metadata.name --no-headers\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ head -1\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + WATCHER_API_POD=watcher-kuttl-api-0\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' -z watcher-kuttl-api-0 ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ head -1\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep transport_url\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -E '^\\[DEFAULT\\]' -A 50\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + rpc_transport_url='transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + '[' -z 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1' ']'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + grep -q /watcher-rpc\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Successfully verified vhost '\\''watcher-rpc'\\'' in RPC transport_url'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Successfully verified vhost 'watcher-rpc' in RPC transport_url\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + grep -q watcher-rpc:\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'\n \ logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo 'Successfully verified username '\\''watcher-rpc'\\'' in RPC transport_url'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Successfully verified username 'watcher-rpc' in RPC transport_url\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -A 5 '\\[oslo_messaging_notifications\\]'\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep transport_url\n logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + notif_transport_url='transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + '[' -z 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1' ']'\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo 'Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + grep -q /watcher-notifications\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo 'Successfully verified vhost '\\''watcher-notifications'\\'' in notifications transport_url'\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Successfully verified vhost 'watcher-notifications' in notifications transport_url\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + grep -q watcher-notifications:\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo 'transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'\n \ logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo 'Successfully verified username '\\''watcher-notifications'\\'' in notifications transport_url'\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Successfully verified username 'watcher-notifications' in notifications transport_url\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + exit 0\n logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | test step completed 1-deploy\n logger.go:42: 16:21:56 | watcher-rmquser/2-cleanup-watcher | starting test step 2-cleanup-watcher\n logger.go:42: 16:22:01 | watcher-rmquser/2-cleanup-watcher | test step completed 2-cleanup-watcher\n logger.go:42: 16:22:01 | watcher-rmquser | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher\n logger.go:42: 16:22:01 | watcher | Skipping creation of user-supplied namespace: watcher-kuttl-default\n \ logger.go:42: 16:22:01 | watcher/0-cleanup-watcher | starting test step 0-cleanup-watcher\n \ logger.go:42: 16:22:01 | watcher/0-cleanup-watcher | test step completed 0-cleanup-watcher\n \ logger.go:42: 16:22:01 | watcher/1-deploy-with-defaults | starting test step 1-deploy-with-defaults\n logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n \ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:04 | watcher/1-deploy-with-defaults | + '[' 0 == 1 ']'\n logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:07 | watcher/1-deploy-with-defaults | + '[' 0 == 1 ']'\n logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:22:12 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56\n logger.go:42: 16:22:12 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | + '[' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 ']'\n logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | + '[' -n '' ']'\n \ logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n \ [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:22:18 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56\n logger.go:42: 16:22:18 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d\n \ logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' 2 == 2 ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c 'region_name = regionOne'\n \ logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' 9 -ge 1 ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + '[' '' == '' ']'\n logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n \ [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + '[' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 ']'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1\n \ logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + '[' 2 == 2 ']'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c 'region_name = regionOne'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + '[' 9 -ge 1 ']'\n logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:22:26 | watcher/1-deploy-with-defaults | + '[' '' == '' ']'\n \ logger.go:42: 16:22:26 | watcher/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n \ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.my\\.cnf}'|base64 -d|grep -c 'ssl=1')\" == 1 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem')\" == 2 ]\n [ \"$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath='{.data.00-default\\.conf}'|base64 -d|grep -c 'region_name = regionOne')\" -ge 1 ]\n # If we are running the container locally, skip following test\n \ if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + '[' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 ']'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n \ logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.my\\.cnf}'\n \ logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1\n \ logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c 'cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + '[' 2 == 2 ']'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o 'jsonpath={.data.00-default\\.conf}'\n logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c 'region_name = regionOne'\n logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + '[' 9 -ge 1 ']'\n logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + '[' '' == '' ']'\n \ logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | test step completed 1-deploy-with-defaults\n \ logger.go:42: 16:22:32 | watcher/2-cleanup-watcher | starting test step 2-cleanup-watcher\n \ logger.go:42: 16:22:32 | watcher/2-cleanup-watcher | test step completed 2-cleanup-watcher\n \ logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | starting test step 3-precreate-mariadbaccount\n logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | MariaDBAccount:watcher-kuttl-default/watcher-precreated created\n logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | test step completed 3-precreate-mariadbaccount\n \ logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | starting test step 4-deploy-with-precreated-account\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Secret:watcher-kuttl-default/custom-prometheus-config created\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n \ logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | error: Internal error occurred: error executing command in container: container is not created or running\n logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | ++ echo\n logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | + '[' 0 == 1 ']'\n logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:37 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:37 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:41 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:44 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:44 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | + APIPOD=\n logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n \ APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:48 | watcher/4-deploy-with-precreated-account | + APIPOD=\n \ logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | error: unable to upgrade connection: container not found (\"watcher-api\")\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ echo\n logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + '[' 0 == 1 ']'\n logger.go:42: 16:22:50 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:50 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:22:52 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:22:52 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:57 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:22:57 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:22:59 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:22:59 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n \ logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail\n oc project watcher-kuttl-default\n APIPOD=$(oc get pods -n watcher-kuttl-default -l \"service=watcher-api\" -ocustom-columns=:metadata.name|grep -v ^$|head -1)\n if [ -n \"${APIPOD}\" ]; then\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c \"^# Global config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c \"^# Service config\") == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem') == 1 ]\n [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo 'TimeOut 80') == 1 ]\n else\n exit 1\n fi\n ]\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | Already on project \"watcher-kuttl-default\" on server \"https://api.crc.testing:6443\".\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ head -1\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -v '^$'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + '[' -n watcher-kuttl-api-0 ']'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Global config'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo '#' Global config\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -c '^# Service config'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo '#' Service config\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -czPo '\\[prometheus_client\\]\\s+host\\s+=\\s+metric-storage-prometheus.watcher-kuttl-default.svc\\s+port\\s+=\\s+9090\\s+cafile\\s+=\\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf\n \ logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo '[DEFAULT]' state_path = /var/lib/watcher transport_url = 'rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log '#' empty notification_level means that no notification will be sent notification_level = '[database]' connection = 'mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf' '[oslo_policy]' policy_file = /etc/watcher/policy.yaml.sample '[oslo_messaging_notifications]' driver = noop '[oslo_messaging_rabbit]' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true '[keystone_authtoken]' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[watcher_clients_auth]' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem '[oslo_concurrency]' lock_path = /var/lib/watcher/tmp '[watcher_datasources]' datasources = prometheus '[cache]' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 '[prometheus_client]' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem '[aetos_client]' endpoint_type = internal region_name = regionOne '[cinder_client]' endpoint_type = internal region_name = regionOne '[glance_client]' endpoint_type = internal region_name = regionOne '[ironic_client]' endpoint_type = internal region_name = regionOne '[keystone_client]' interface = internal region_name = regionOne '[neutron_client]' endpoint_type = internal region_name = regionOne '[nova_client]' endpoint_type = internal region_name = regionOne '[placement_client]' interface = internal region_name = regionOne '[watcher_cluster_data_model_collectors.compute]' period = 900 '[watcher_cluster_data_model_collectors.baremetal]' period = 900 '[watcher_cluster_data_model_collectors.storage]' period = 900\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -czPo 'TimeOut 80'\n logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf\n \ logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | ++ echo '#' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '' ServerName watcher-internal.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' '' '#' public vhost watcher-public.watcher-kuttl-default.svc configuration '' ServerName watcher-public.watcher-kuttl-default.svc '##' Vhost docroot DocumentRoot '\"/var/www/cgi-bin\"' '#' Set the timeout for the watcher-api TimeOut 80 '##' Directories, there should at least be a declaration for /var/www/cgi-bin '' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '' '##' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined 'env=!forwarded' CustomLog /dev/stdout proxy env=forwarded '##' set watcher log level to debug LogLevel debug '##' WSGI configuration WSGIApplicationGroup '%{GLOBAL}' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / '\"/usr/bin/watcher-api-wsgi\"' ''\n logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | + '[' 1 == 1 ']'\n logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | test step completed 4-deploy-with-precreated-account\n \ logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | starting test step 5-cleanup-watcher\n \ logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:23:11 | watcher/5-cleanup-watcher | + '[' 1 == 0 ']'\n logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | ++ grep -c '^watcher'\n \ logger.go:42: 16:23:14 | watcher/5-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:23:17 | watcher/5-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | ++ grep -c '^watcher'\n \ logger.go:42: 16:23:21 | watcher/5-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:23:21 | watcher/5-cleanup-watcher | test step completed 5-cleanup-watcher\n logger.go:42: 16:23:21 | watcher | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-cinder\n \ logger.go:42: 16:23:21 | watcher-cinder | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:23:21 | watcher-cinder/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:23:21 | watcher-cinder/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | starting test step 1-deploy-watcher-no-cinder\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n \ logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:27 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:27 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods \"watcher-kuttl-decision-engine-0\" not found in namespace \"watcher-kuttl-default\"\n logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | Error from server (BadRequest): container \"watcher-decision-engine\" in pod \"watcher-kuttl-decision-engine-0\" is waiting to start: ContainerCreating\n logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:35 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 1 == 2 ']'\n logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:41 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | test step completed 1-deploy-watcher-no-cinder\n logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | starting test step 2-deploy-cinder\n logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | OpenStackControlPlane:watcher-kuttl-default/openstack updated\n logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n \ # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:45 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:52 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:57 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:03 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:09 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:15 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:20 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:25 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:31 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:36 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:41 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | + '[' 2 == 0 ']'\n logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | Error from server (BadRequest): container \"watcher-decision-engine\" in pod \"watcher-kuttl-decision-engine-0\" is waiting to start: ContainerCreating\n logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | Error from server (BadRequest): container \"watcher-decision-engine\" in pod \"watcher-kuttl-decision-engine-0\" is waiting to start: ContainerCreating\n logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:48 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:54 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision detects that there is a cinder service and\n # does not log that storage collector is skipped\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 0 ]\n ]\n logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | + '[' 0 == 0 ']'\n logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | test step completed 2-deploy-cinder\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | starting test step 3-remove-cinder\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | OpenStackControlPlane:watcher-kuttl-default/openstack updated\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n \ # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n \ ]\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:24:58 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:04 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | Error from server (BadRequest): container \"watcher-decision-engine\" in pod \"watcher-kuttl-decision-engine-0\" is waiting to start: ContainerCreating\n logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | Error from server (BadRequest): container \"watcher-decision-engine\" in pod \"watcher-kuttl-decision-engine-0\" is waiting to start: ContainerCreating\n logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:11 | watcher-cinder/3-remove-cinder | + '[' 0 == 2 ']'\n \ logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | + '[' 1 == 2 ']'\n logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n \ logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n \ logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:17 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n \ logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail\n # check that the decision engine correctly detects that there is no cinder service\n [ \"$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c 'Block storage service is not enabled, skipping storage collector')\" == 2 ]\n ]\n logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0\n logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | ++ grep -c 'Block storage service is not enabled, skipping storage collector'\n \ logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | + '[' 2 == 2 ']'\n \ logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | test step completed 3-remove-cinder\n logger.go:42: 16:25:20 | watcher-cinder/4-cleanup-watcher | starting test step 4-cleanup-watcher\n logger.go:42: 16:25:27 | watcher-cinder/4-cleanup-watcher | test step completed 4-cleanup-watcher\n logger.go:42: 16:25:27 | watcher-cinder | skipping kubernetes event logging\n=== CONT kuttl/harness/watcher-api-scaling\n \ logger.go:42: 16:25:27 | watcher-api-scaling | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:25:27 | watcher-api-scaling/0-cleanup-watcher | starting test step 0-cleanup-watcher\n logger.go:42: 16:25:27 | watcher-api-scaling/0-cleanup-watcher | test step completed 0-cleanup-watcher\n logger.go:42: 16:25:27 | watcher-api-scaling/1-deploy-with-defaults | starting test step 1-deploy-with-defaults\n logger.go:42: 16:25:27 | watcher-api-scaling/1-deploy-with-defaults | Watcher:watcher-kuttl-default/watcher-kuttl created\n logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n ]\n logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:30 | watcher-api-scaling/1-deploy-with-defaults | + '[' 0 == 1 ']'\n logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:33 | watcher-api-scaling/1-deploy-with-defaults | + '[' 0 == 1 ']'\n logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6\n logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + '[' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 ']'\n logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + '[' -n '' ']'\n logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n \ SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n \ [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6\n logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + '[' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 ']'\n logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:25:45 | watcher-api-scaling/1-deploy-with-defaults | + '[' '' == '' ']'\n logger.go:42: 16:25:45 | watcher-api-scaling/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:25:49 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6\n logger.go:42: 16:25:49 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + '[' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 ']'\n logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + '[' '' == '' ']'\n logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6\n logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | + '[' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 ']'\n logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + '[' '' == '' ']'\n logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]\n SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk '{print $1}')\n [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]\n [ -n \"$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})\" ]\n # If we are running the container locally, skip following test\n if [ \"$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)\" == \"\" ]; then\n exit 0\n fi\n env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)\n \ counter=0\n for i in ${env_variables}; do\n if echo ${i} | grep '_URL_DEFAULT' &> /dev/null; then\n echo ${i}\n counter=$((counter + 1))\n fi\n done\n if [ ${counter} -lt 3 ]; then\n echo \"Error: Less than 3 _URL_DEFAULT variables found.\"\n exit 1\n else\n \ echo \"Success: ${counter} _URL_DEFAULT variables found.\"\n fi\n \ ]\n logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c '^watcher'\n logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | + '[' 1 == 1 ']'\n logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID\n logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ awk '{print $1}'\n logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher\n logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6\n logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o 'jsonpath={.status.serviceID}'\n \ logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + '[' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 ']'\n logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o 'jsonpath={.status.hash.dbsync}'\n logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + '[' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q ']'\n logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher\n \ logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | + '[' '' == '' ']'\n logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | + exit 0\n logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | test step completed 1-deploy-with-defaults\n logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | starting test step 2-scale-up-watcher-api\n logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/replicas\", \"value\":3}]'\n \ ]\n logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:26:13 | watcher-api-scaling/2-scale-up-watcher-api | test step completed 2-scale-up-watcher-api\n \ logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | starting test step 3-scale-down-watcher-api\n logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/replicas\", \"value\":1}]'\n \ ]\n logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:26:16 | watcher-api-scaling/3-scale-down-watcher-api | test step completed 3-scale-down-watcher-api\n \ logger.go:42: 16:26:16 | watcher-api-scaling/4-scale-down-zero-watcher-api | starting test step 4-scale-down-zero-watcher-api\n logger.go:42: 16:26:16 | watcher-api-scaling/4-scale-down-zero-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/apiServiceTemplate/replicas\", \"value\":0}]'\n \ ]\n logger.go:42: 16:26:17 | watcher-api-scaling/4-scale-down-zero-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched\n logger.go:42: 16:26:18 | watcher-api-scaling/4-scale-down-zero-watcher-api | test step completed 4-scale-down-zero-watcher-api\n \ logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | starting test step 5-cleanup-watcher\n logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:26:20 | watcher-api-scaling/5-cleanup-watcher | + '[' 1 == 0 ']'\n logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | running command: [sh -c set -ex\n oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]\n ]\n logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type\n logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | ++ grep -c '^watcher'\n logger.go:42: 16:26:24 | watcher-api-scaling/5-cleanup-watcher | + '[' 0 == 0 ']'\n logger.go:42: 16:26:24 | watcher-api-scaling/5-cleanup-watcher | test step completed 5-cleanup-watcher\n logger.go:42: 16:26:24 | watcher-api-scaling | skipping kubernetes event logging\n=== CONT kuttl/harness/deps\n logger.go:42: 16:26:24 | deps | Ignoring infra.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n \ logger.go:42: 16:26:24 | deps | Ignoring keystone.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n logger.go:42: 16:26:24 | deps | Ignoring kustomization.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n \ logger.go:42: 16:26:24 | deps | Ignoring namespace.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n logger.go:42: 16:26:24 | deps | Ignoring telemetry.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n \ logger.go:42: 16:26:24 | deps | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:26:24 | deps | skipping kubernetes event logging\n=== CONT kuttl/harness/common\n logger.go:42: 16:26:24 | common | Ignoring cleanup-assert.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n \ logger.go:42: 16:26:24 | common | Ignoring cleanup-errors.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n logger.go:42: 16:26:24 | common | Ignoring cleanup-watcher.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n logger.go:42: 16:26:24 | common | Ignoring deploy-with-defaults.yaml as it does not match file name regexp: ^(\\d+)-(?:[^\\.]+)(?:\\.yaml)?$\n \ logger.go:42: 16:26:24 | common | Skipping creation of user-supplied namespace: watcher-kuttl-default\n logger.go:42: 16:26:24 | common | skipping kubernetes event logging\n=== NAME kuttl\n harness.go:406: run tests finished\n harness.go:514: cleaning up\n harness.go:571: removing temp folder: \"\"\n--- FAIL: kuttl (1493.95s)\n \ --- FAIL: kuttl/harness (0.00s)\n --- FAIL: kuttl/harness/appcred-tests (962.71s)\n --- PASS: kuttl/harness/watcher-notification (37.61s)\n --- PASS: kuttl/harness/watcher-topology (31.57s)\n --- PASS: kuttl/harness/watcher-tls-certs-change (36.81s)\n --- PASS: kuttl/harness/watcher-tls (127.41s)\n --- PASS: kuttl/harness/watcher-rmquser (34.91s)\n --- PASS: kuttl/harness/watcher (79.13s)\n --- PASS: kuttl/harness/watcher-cinder (126.78s)\n --- PASS: kuttl/harness/watcher-api-scaling (56.98s)\n --- PASS: kuttl/harness/deps (0.00s)\n --- PASS: kuttl/harness/common (0.00s)\nFAIL" stdout_lines: - oc kuttl test --v 1 --start-kind=false --config test/kuttl/test-suites/default/config.yaml - === RUN kuttl - ' harness.go:463: starting setup' - ' harness.go:255: running tests using configured kubeconfig.' - ' harness.go:278: Successful connection to cluster at: https://api.crc.testing:6443' - ' harness.go:363: running tests' - ' harness.go:75: going to run test suite with timeout of 300 seconds for each step' - ' harness.go:375: testsuite: test/kuttl/test-suites/default/ has 11 tests' - === RUN kuttl/harness - === RUN kuttl/harness/appcred-tests - === PAUSE kuttl/harness/appcred-tests - === RUN kuttl/harness/common - === PAUSE kuttl/harness/common - === RUN kuttl/harness/deps - === PAUSE kuttl/harness/deps - === RUN kuttl/harness/watcher - === PAUSE kuttl/harness/watcher - === RUN kuttl/harness/watcher-api-scaling - === PAUSE kuttl/harness/watcher-api-scaling - === RUN kuttl/harness/watcher-cinder - === PAUSE kuttl/harness/watcher-cinder - === RUN kuttl/harness/watcher-notification - === PAUSE kuttl/harness/watcher-notification - === RUN kuttl/harness/watcher-rmquser - === PAUSE kuttl/harness/watcher-rmquser - === RUN kuttl/harness/watcher-tls - === PAUSE kuttl/harness/watcher-tls - === RUN kuttl/harness/watcher-tls-certs-change - === PAUSE kuttl/harness/watcher-tls-certs-change - === RUN kuttl/harness/watcher-topology - === PAUSE kuttl/harness/watcher-topology - === CONT kuttl/harness/appcred-tests - ' logger.go:42: 16:01:30 | appcred-tests | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:01:30 | appcred-tests/0-cleanup | starting test step 0-cleanup' - ' logger.go:42: 16:01:30 | appcred-tests/0-cleanup | test step completed 0-cleanup' - ' logger.go:42: 16:01:30 | appcred-tests/1-deploy | starting test step 1-deploy' - ' logger.go:42: 16:01:31 | appcred-tests/1-deploy | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:01:31 | appcred-tests/1-deploy | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' oc wait -n "${NS}" watcher watcher-kuttl --for=condition=Ready --timeout=600s]' - ' logger.go:42: 16:02:31 | appcred-tests/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met' - ' logger.go:42: 16:02:31 | appcred-tests/1-deploy | test step completed 1-deploy' - ' logger.go:42: 16:02:31 | appcred-tests/2-deploy-appcred | starting test step 2-deploy-appcred' - ' logger.go:42: 16:02:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' old_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' old_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' old_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' oc create configmap appcred-watcher-pre \' - ' --from-literal=api_uid="${old_api_uid}" \' - ' --from-literal=applier_uid="${old_applier_uid}" \' - ' --from-literal=decision_engine_uid="${old_de_uid}" \' - ' --dry-run=client -o yaml | oc apply -n "${NS}" -f -' - ' ' - ' cat <<''EOF'' | oc apply -n "${NS}" -f -' - ' apiVersion: keystone.openstack.org/v1beta1' - ' kind: KeystoneApplicationCredential' - ' metadata:' - ' name: ac-watcher' - ' spec:' - ' secret: osp-secret' - ' passwordSelector: WatcherPassword' - ' userName: watcher' - ' roles:' - ' - admin' - ' - service' - ' unrestricted: false' - ' EOF' - ' ' - ' oc patch watcher watcher-kuttl -n "${NS}" --type=merge -p ''{"spec":{"auth":{"applicationCredentialSecret":"ac-watcher-secret"}}}'']' - ' logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | configmap/appcred-watcher-pre created' - ' logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | keystoneapplicationcredential.keystone.openstack.org/ac-watcher created' - ' logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:02:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:32 | appcred-tests/2-deploy-appcred | error: timed out waiting for the condition on keystoneapplicationcredentials/ac-watcher' - ' logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:07:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:07:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:07:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:08:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:08:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:08:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:09:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:10:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:11:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:11:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:11:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:12:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:12:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:12:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:13:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:52 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:53 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:14:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:38 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:39 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:39 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:45 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:15:59 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:00 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:00 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:06 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:13 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:20 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:27 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:33 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:34 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:35 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:36 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:37 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:38 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:38 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:39 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:40 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:41 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:42 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:43 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:44 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:45 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:45 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:46 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:47 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:48 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:49 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:50 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:51 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:52 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:52 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:53 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:54 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:55 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:56 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:57 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:16:58 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:16:59 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:16:59 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:00 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:01 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:02 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:03 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:04 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:05 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:06 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:06 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:07 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:08 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:09 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:10 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:11 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:12 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:13 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:13 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:14 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:15 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:16 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:17 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:18 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:19 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:20 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:20 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:21 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:22 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:23 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:24 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:25 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:26 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:27 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:27 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:28 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:29 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:30 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:31 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | running command: [sh -c set -euo pipefail' - ' NS="${NAMESPACE}"' - ' ' - ' echo "Waiting for KeystoneApplicationCredential ac-watcher to be Ready..."' - ' oc wait -n "${NS}" appcred/ac-watcher --for=condition=Ready --timeout=300s' - ' ' - ' ac_id=$(oc get -n "${NS}" appcred/ac-watcher -o jsonpath=''{.status.acID}'')' - ' if [ -z "${ac_id}" ]; then' - ' echo "ERROR: appcred/ac-watcher.status.acID is empty"' - ' exit 1' - ' fi' - ' echo "ac-watcher.status.acID=${ac_id}"' - ' ' - ' oc get -n "${NS}" secret/ac-watcher-secret >/dev/null' - ' secret_ac_id=$(oc get -n "${NS}" secret/ac-watcher-secret -o jsonpath=''{.data.AC_ID}'' | base64 -d)' - ' if [ "${secret_ac_id}" != "${ac_id}" ]; then' - ' echo "ERROR: Secret AC_ID (${secret_ac_id}) != appcred.status.acID (${ac_id})"' - ' exit 1' - ' fi' - ' echo "✓ Secret AC_ID matches appcred.status.acID"' - ' ' - ' echo "Waiting for watcher rollouts..."' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-api --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-applier --timeout=300s' - ' oc rollout status -n "${NS}" statefulset/watcher-kuttl-decision-engine --timeout=300s' - ' ' - ' old_api_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.api_uid}'')' - ' old_applier_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.applier_uid}'')' - ' old_de_uid=$(oc get -n "${NS}" configmap/appcred-watcher-pre -o jsonpath=''{.data.decision_engine_uid}'')' - ' ' - ' new_api_uid=$(oc get pod -n "${NS}" watcher-kuttl-api-0 -o jsonpath=''{.metadata.uid}'')' - ' new_applier_uid=$(oc get pod -n "${NS}" watcher-kuttl-applier-0 -o jsonpath=''{.metadata.uid}'')' - ' new_de_uid=$(oc get pod -n "${NS}" watcher-kuttl-decision-engine-0 -o jsonpath=''{.metadata.uid}'')' - ' ' - ' if [ "${old_api_uid}" = "${new_api_uid}" ] || [ "${old_applier_uid}" = "${new_applier_uid}" ] || [ "${old_de_uid}" = "${new_de_uid}" ]; then' - ' echo "ERROR: expected watcher pods to restart after appcred secret became available"' - ' echo " api: ${old_api_uid} -> ${new_api_uid}"' - ' echo " applier: ${old_applier_uid} -> ${new_applier_uid}"' - ' echo " decision-engine: ${old_de_uid} -> ${new_de_uid}"' - ' exit 1' - ' fi' - ' echo "✓ watcher pods restarted after appcred secret became available"' - ' ' - ' echo "Checking watcher config contains application_credential_id..."' - ' oc exec -n "${NS}" pod/watcher-kuttl-api-0 -c watcher-api -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-applier-0 -c watcher-applier -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' oc exec -n "${NS}" pod/watcher-kuttl-decision-engine-0 -c watcher-decision-engine -- \' - ' bash -c "grep -q \"^application_credential_id = ${ac_id}$\" /etc/watcher/watcher.conf.d/00-default.conf"' - ' echo "✓ watcher config contains expected application_credential_id"]' - ' logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | Waiting for KeystoneApplicationCredential ac-watcher to be Ready...' - ' logger.go:42: 16:17:32 | appcred-tests/2-deploy-appcred | Error from server (NotFound): keystoneapplicationcredentials.keystone.openstack.org "ac-watcher" not found' - ' logger.go:42: 16:17:33 | appcred-tests/2-deploy-appcred | test step failed 2-deploy-appcred' - ' case.go:396: failed in step 2-deploy-appcred' - ' case.go:398: command "NS=\"${NAMESPACE}\"\\n echo \"Waiting for KeystoneApplicationCredential..." failed, exit status 1' - ' logger.go:42: 16:17:33 | appcred-tests | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-notification - ' logger.go:42: 16:17:33 | watcher-notification | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:17:33 | watcher-notification/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:17:33 | watcher-notification/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | starting test step 1-deploy-with-notification' - ' logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:33 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | Now using project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:34 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | error: Internal error occurred: error executing command in container: container is not created or running' - ' logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | ++ echo' - ' logger.go:42: 16:17:35 | watcher-notification/1-deploy-with-notification | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:36 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:37 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:39 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:40 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:41 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:42 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:43 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:44 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:45 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:46 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:47 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:48 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:49 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:50 | watcher-notification/1-deploy-with-notification | + APIPOD=' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | ++ echo' - ' logger.go:42: 16:17:51 | watcher-notification/1-deploy-with-notification | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:52 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:17:53 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:17:54 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:17:55 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:55 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:17:56 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:17:57 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:17:59 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:18:00 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:18:01 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:18:01 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:18:02 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+='') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | + oc project watcher-kuttl-default' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ head -1' - ' logger.go:42: 16:18:03 | watcher-notification/1-deploy-with-notification | ++ grep -v ''^$''' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | ++ grep -czPo ''\[oslo_messaging_notifications\]\s+driver\s+=\s+messagingv2\s+transport_url\s+=''' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_a660:8502e801b18e815763860e7eefc70339@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = messagingv2 transport_url = ''rabbit://default_user_I6f6zKOBLU76Pr74C5S:NMvNvliR9JfNJwTtRx2-upsPmWKjcAkC@rabbitmq-notifications.watcher-kuttl-default.svc:5671/?ssl=1'' ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:18:04 | watcher-notification/1-deploy-with-notification | test step completed 1-deploy-with-notification' - ' logger.go:42: 16:18:04 | watcher-notification/2-cleanup-watcher | starting test step 2-cleanup-watcher' - ' logger.go:42: 16:18:11 | watcher-notification/2-cleanup-watcher | test step completed 2-cleanup-watcher' - ' logger.go:42: 16:18:11 | watcher-notification | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-topology - ' logger.go:42: 16:18:11 | watcher-topology | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:18:11 | watcher-topology/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:18:11 | watcher-topology/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | starting test step 1-deploy-with-topology' - ' logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | Topology:watcher-kuttl-default/watcher-api created' - ' logger.go:42: 16:18:11 | watcher-topology/1-deploy-with-topology | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:18:36 | watcher-topology/1-deploy-with-topology | test step completed 1-deploy-with-topology' - ' logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | starting test step 2-cleanup-watcher' - ' logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:18:36 | watcher-topology/2-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:18:39 | watcher-topology/2-cleanup-watcher | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:18:40 | watcher-topology/2-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:18:42 | watcher-topology/2-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:18:42 | watcher-topology/2-cleanup-watcher | test step completed 2-cleanup-watcher' - ' logger.go:42: 16:18:42 | watcher-topology | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-tls-certs-change - ' logger.go:42: 16:18:42 | watcher-tls-certs-change | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | starting test step 1-deploy-with-tlse' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-internal-svc created' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-public-svc created' - ' logger.go:42: 16:18:42 | watcher-tls-certs-change/1-deploy-with-tlse | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:43 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:44 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:45 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:46 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:48 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:49 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:49 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:50 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:50 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:51 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:52 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | Error from server (NotFound): pods "watcher-kuttl-api-0" not found' - ' logger.go:42: 16:18:53 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:18:55 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:18:56 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:57 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:18:58 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:00 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:01 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:01 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:02 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:03 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:04 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:05 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:06 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' public_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' public_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${public_svc_cert}" != "${public_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ' - ' internal_svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' internal_secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${internal_svc_cert}" != "${internal_secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + public_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + public_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:07 | watcher-tls-certs-change/1-deploy-with-tlse | ++ base64 --decode' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | + internal_secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/1-deploy-with-tlse | test step completed 1-deploy-with-tlse' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | starting test step 2-change-public-svc-certificate' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c oc patch Certificate -n $NAMESPACE watcher-public-svc --type=''json'' -p=''[{"op": "replace", "path": "/spec/dnsNames", "value":[''watcher-public.watcher-kuttl-default.svc'', ''watcher-public.watcher-kuttl-default.svc.cluster.local'']}]''' - ' ]' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | certificate.cert-manager.io/watcher-public-svc patched' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail' - ' svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${svc_cert}" != "${secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ base64 --decode' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIIDsjCCAhqgAwIBAgIQQGgnPKJx6caSondqrX1YlDANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTg0M1oXDTMxMDMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEskHzu' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | pLI41onIaipoKjX9plnVLg+kUeNGTISsrlyrtTpfPbOsXl0kz19XhwZGYQbwSACH' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | UWE17x6pE3Q4lQFoTxSzPhW82AWqxJcJ5kC0EzfCr16G+Qtb11aG7Xq26LFjVsol' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | xXlj9jVJbUl9l/T6FvywxM8rNMCmfYcTlmZX6B1EPy8uqWt2p5g8o4i9H7q8xq7X' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | b0P3Oh9vC5aRtE061l7oel8MakPaerm/9724fDamL/bu0uw1nIq/D7gsiHCbB1iI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j9FfbDP+zFqZjiO6Kbti5vBiLiBOuCrHD1AGqmbPaUP9GBSCwgflBbzdY6fYkt28' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | w4ZKy8v3otPqXwMCAwEAAaOBjzCBjDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDA2BgNVHREBAf8ELDAqgih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjMA0GCSqGSIb3DQEBDAUAA4IBgQCYdGi/BrpyMcuH' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | oMuGGt9nN+6i/oVF2dXgtd8e76oZbeHeAbwDNLGWm0bqaBfQvv+tMOR7V+9Akdvp' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6hBgnyeXMwEZuPJyRWfNtYTjEtg/3t0TWoBbu7qSb+++p4DDGgMmW5XaH3roSOj6' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 3WXJ18Hz3kP/zI96JL+a1P7WsPRCULsc7wCnU9llvj9k8pI+vgZFaP9D8oFOTZAv' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | vL9vbj0AA4GlN3pkx000XenYwddqiIFQ9YqivvZ8VH7DHHYiTvLucnKYUStJY7Wl' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 7ttC6OLUkQd4Ncf7GyAXON3qdOAKzC3Hs0DHYv4NAicb+WuuVjWr+Sgb3O3/WTxs' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | R0t88gl20NLzpZY6+Fbt14oNjDcr5D6VN39PXTa72a5NpEVEEw9+OVcprBHRSmj0' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | ZdDPFpNgfutSvFqAOSIU/pLjwzCAa30OwiaDFtUZCMFLjivDqVU/7DxMyAixbmy9' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | dfxEbZsJCEdVZBOu9H56zByyY9A7FGzavHi3NrpLh6B1eaB3SrI=' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:08 | watcher-tls-certs-change/2-change-public-svc-certificate | + exit 1' - ' logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail' - ' svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${svc_cert}" != "${secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:19:09 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=' - ' logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail' - ' svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${svc_cert}" != "${secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:19:10 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=' - ' logger.go:42: 16:19:11 | watcher-tls-certs-change/2-change-public-svc-certificate | running command: [sh -c set -euxo pipefail' - ' svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt)' - ' secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-public-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${svc_cert}" != "${secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:11 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/public.crt' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ base64 --decode' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-public-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MIID6jCCAlKgAwIBAgIQZJaVw8Wo/ookNMvl5tSf7zANBgkqhkiG9w0BAQwFADAY' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MRYwFAYDVQQDEw1yb290Y2EtcHVibGljMB4XDTI2MDMyMDE2MTkwOFoXDTMxMDMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | OTE2MTkwOFowADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXRB7B3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | rhfYNMtE5MNaVBPTQ1ChoGf12bhDR7Hfz4Pv0e9XQRR0iY1L3O/sIYBsUs+UDZIi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 1sO1e0hu0f/ub72rJMdYIWEW+gWSTmTOFffkt+dnobBgQlXXw5g7ZSg4EbaGx6Kf' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | GKGVlEhQ9uEjQNrifD33D8vfR/3AsqR1MnZEcrQRXHjjhDXlhLNtNQEceenSDm+0' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0ok9qcjT0JDZCVre77nyPUISheJeWK3ZkiHxDthkL7ukO/9rVwYRNuWEB4JHZHFI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | MqGuhbe7jgVW0QrBl314Zjw5ET2FKdlTKtd/b+PhNnuU2qhjWYO76WhqcpllFwau' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sunqw0flNMujB88CAwEAAaOBxzCBxDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAww' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | CgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSxb24uCXYNsB7/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 0Hm6PaQEE6ByeDBuBgNVHREBAf8EZDBigih3YXRjaGVyLXB1YmxpYy53YXRjaGVy' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWt1dHRsLWRlZmF1bHQuc3ZjgjZ3YXRjaGVyLXB1YmxpYy53YXRjaGVyLWt1dHRs' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | LWRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwwDQYJKoZIhvcNAQEMBQADggGBAC/o' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 5/i5C0Y/AKLiB3xtslI8c9UVyiOwIpEOrBpAYh0CQe7PkZ9zV4mBLHrY5tneZeQ/' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | gKY2iSGZifksOo9R2RmPjpKPIrDqgKveIqRYsNeCkVKKXimGwzNVBhoCDnpkrd0r' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | HttXDFUG47HTtNbtx9gbHEnL9JViBLG/91Fb2PavY1G6rYeRpJT13dAr2/ozwk0F' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | j5lPZ2ZxWmWxE51A3yAmXXa8NT+MJpwWW1Gu9eSb+Bn2TELEMuEHos6Qn6Ob957P' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | YcG0oFRp+ecTVjfLhZmXMyYoEzmLlXLuGaUQqvlXECGTSbw5erNtKRkS4gAQ0PAI' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | sRSypaVKNLM96+09mRoN9ppbVXUrmd4haOg9l09Bpth6s6bywa3GcqkBHjORfRUu' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | 6/lzDFbw+LAZRB7kiWeyD9W+LlhYC6ZzxjrTpuNIfNwmsCKCPzHadwq2OXa2vIZi' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | p+EfRtIGSWnMfKbcf6w2QsDS8061IT7HHoFOS9K8BWVPA3gUgAn4f0+B5r5t1g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/2-change-public-svc-certificate | test step completed 2-change-public-svc-certificate' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | starting test step 3-change-internal-svc-certificate' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | running command: [sh -c oc patch Certificate -n $NAMESPACE watcher-internal-svc --type=''json'' -p=''[{"op": "replace", "path": "/spec/dnsNames", "value":[''watcher-internal.watcher-kuttl-default.svc'', ''watcher-internal.watcher-kuttl-default.svc.cluster.local'']}]''' - ' ]' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | certificate.cert-manager.io/watcher-internal-svc patched' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | running command: [sh -c set -euxo pipefail' - ' svc_cert=$(oc rsh -n $NAMESPACE -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt)' - ' secret_cert=$(oc get -n $NAMESPACE secret cert-watcher-internal-svc -o jsonpath=''{.data.tls\.crt}'' | base64 --decode)' - ' # ensure that the svc secret and cert secret match' - ' if [ "${svc_cert}" != "${secret_cert}" ]; then' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ oc rsh -n watcher-kuttl-default -c watcher-api watcher-kuttl-api-0 cat /etc/pki/tls/certs/internal.crt' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + svc_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ base64 --decode' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ++ oc get -n watcher-kuttl-default secret cert-watcher-internal-svc -o ''jsonpath={.data.tls\.crt}''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + secret_cert=''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | + ''['' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----'' ''!='' ''-----BEGIN CERTIFICATE-----' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MIIDtzCCAh+gAwIBAgIRANF4447q2MtjDeEIvUhmlVcwDQYJKoZIhvcNAQEMBQAw' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | GjEYMBYGA1UEAxMPcm9vdGNhLWludGVybmFsMB4XDTI2MDMyMDE2MTg0M1oXDTMx' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | MDMxOTE2MTg0M1owADCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | NL7FiNTBRQ8Hl5cJhC584DgE2SPAXLs8WH3MsCnlC9J/iPUX9GOuAHaevAqcpzo2' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | S5hnnW69txk0LK3Sv/pS2tHNpNs8QFuam6GjK0Gmn/G9S1i4zTdHVSKsI9mhjRro' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | bn6tlPiBV5l6sCIBh/3CXZ1hgF6y12GvrWvhbUbit7QnLyegLRJdIpntFeEfN671' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TOmyUJpV8Q6zsw2Uk0gX9yLHeN3mdmBCFJsr7GFaSi9D6pUHod+8EaJtG9O67w/B' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 64sxP3hTRFYoL3oBRscZRz3udkfYARvpAtodS8mf5GU3JvytLt/SE1UTJryKZGMQ' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 8MIzcAdxr0QwZb+QEkECAwEAAaOBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0l' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | BAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBS4NL6lo33E' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 2n1gavkHzKPvAQr3TTA4BgNVHREBAf8ELjAsgip3YXRjaGVyLWludGVybmFsLndh' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dGNoZXIta3V0dGwtZGVmYXVsdC5zdmMwDQYJKoZIhvcNAQEMBQADggGBAAPz9l1J' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | 4yvKJlSLGjV4C/+IF2fX4o8hZ/3j3j1DI49fcMp+MSJ0DVyyuXo8Y0i3ABPv3IwU' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | cTZt6NL7BFWCYtX3S0WvaoLqCGUagQuruab2bdsmHNoyvU2GDJv8IX7ScDVRIlEq' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | dKXmU3IPpQRxLgQ6lHb2ROqTLOm9gD1F0DsZqr2mJ16eNlDEYEbHtaqHls7aeCc6' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | SY+nuScf8D+5XlNv/pxbbL18b7PQrYT1MjYgvy9fYhvYguqEi3NwDbTPBJjL3cC3' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | r4alOjuTRyLPrUa+ck0nb23Q7Qj4Jb1kj8FBm4B+xSkVE5reCIIr3pDxs47J2WQk' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | TrbUjYpmx5McOX1OrnPoLVnU6ez1OOmGZljT4jcXxW7xMRoiVsYw5tVepJmqDiLb' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | kRCk/1G+eJIDLDrfK6exR27XENTcQd7HFW10+i7bhqVxfdecseih7/m/A4QwXJKE' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | ExrHi2FixsE6po2i49FFQEGANHOAQdnZyMq3gwFOuqBXHB67NyhPh7V+/g==' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | -----END CERTIFICATE-----'' '']''' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/3-change-internal-svc-certificate | test step completed 3-change-internal-svc-certificate' - ' logger.go:42: 16:19:12 | watcher-tls-certs-change/4-cleanup-watcher | starting test step 4-cleanup-watcher' - ' logger.go:42: 16:19:19 | watcher-tls-certs-change/4-cleanup-watcher | test step completed 4-cleanup-watcher' - ' logger.go:42: 16:19:19 | watcher-tls-certs-change/5-clenaup-certs | starting test step 5-clenaup-certs' - ' logger.go:42: 16:19:19 | watcher-tls-certs-change/5-clenaup-certs | test step completed 5-clenaup-certs' - ' logger.go:42: 16:19:19 | watcher-tls-certs-change | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-tls - ' logger.go:42: 16:19:19 | watcher-tls | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:19:19 | watcher-tls/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:19:19 | watcher-tls/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | starting test step 1-deploy-with-tlse' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-internal-svc created' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Certificate:watcher-kuttl-default/watcher-public-svc created' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:19 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:22 | watcher-tls/1-deploy-with-tlse | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:23 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:25 | watcher-tls/1-deploy-with-tlse | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:26 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ grep watcher' - ' logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:19:28 | watcher-tls/1-deploy-with-tlse | ++ awk ''{print $1}''' - ' logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:19:30 | watcher-tls/1-deploy-with-tlse | + ''['' -n '''' '']''' - ' logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:32 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ grep watcher' - ' logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ awk ''{print $1}''' - ' logger.go:42: 16:19:34 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:36 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + grep infra-optim' - ' logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | ++ grep -c https' - ' logger.go:42: 16:19:37 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:19:39 | watcher-tls/1-deploy-with-tlse | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:40 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ grep watcher' - ' logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ awk ''{print $1}''' - ' logger.go:42: 16:19:42 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:19:44 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + grep infra-optim' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:19:45 | watcher-tls/1-deploy-with-tlse | ++ grep -c https' - ' logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:19:47 | watcher-tls/1-deploy-with-tlse | + exit 0' - ' logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n ${NAMESPACE} secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' # check that both endpoints have https set' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 2 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:19:48 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''^watcher''' - ' logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ grep watcher' - ' logger.go:42: 16:19:50 | watcher-tls/1-deploy-with-tlse | ++ awk ''{print $1}''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ grep -c ssl=1' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ base64 -d' - ' logger.go:42: 16:19:52 | watcher-tls/1-deploy-with-tlse | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + grep infra-optim' - ' logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:19:53 | watcher-tls/1-deploy-with-tlse | ++ grep -c https' - ' logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | + exit 0' - ' logger.go:42: 16:19:55 | watcher-tls/1-deploy-with-tlse | test step completed 1-deploy-with-tlse' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | starting test step 2-patch-mtls' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail' - ' oc patch oscp -n $NAMESPACE openstack --type=''json'' -p=''[{"op": "replace", "path": "/spec/memcached/templates/memcached/tls/mtls/sslVerifyMode", "value": "Request"}]''' - ' ]' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + oc patch oscp -n watcher-kuttl-default openstack --type=json ''-p=[{"op": "replace", "path": "/spec/memcached/templates/memcached/tls/mtls/sslVerifyMode", "value": "Request"}]''' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | openstackcontrolplane.core.openstack.org/openstack patched' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail' - ' ' - ' oc project ${NAMESPACE}' - ' # Get pod names for each watcher service' - ' APIPOD=$(oc get pods -l service=watcher-api -o jsonpath=''{.items[0].metadata.name}'')' - ' APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath=''{.items[0].metadata.name}'')' - ' DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath=''{.items[0].metadata.name}'')' - ' ' - ' # Verify memcached mTLS config parameters in watcher-api config' - ' if [ -n "${APIPOD}" ]; then' - ' echo "Checking watcher-api config..."' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' # Verify mTLS config parameters in memcached backend config' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-applier config' - ' if [ -n "${APPLIERPOD}" ]; then' - ' echo "Checking watcher-applier config..."' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-decision-engine config' - ' if [ -n "${DECISIONENGINEPOD}" ]; then' - ' echo "Checking watcher-decision-engine config..."' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0' - ' logger.go:42: 16:19:55 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + echo ''Checking watcher-api config...''' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | Checking watcher-api config...' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ''' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | error: Internal error occurred: error executing command in container: container is not created or running' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | ++ echo' - ' logger.go:42: 16:19:56 | watcher-tls/2-patch-mtls | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail' - ' ' - ' oc project ${NAMESPACE}' - ' # Get pod names for each watcher service' - ' APIPOD=$(oc get pods -l service=watcher-api -o jsonpath=''{.items[0].metadata.name}'')' - ' APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath=''{.items[0].metadata.name}'')' - ' DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath=''{.items[0].metadata.name}'')' - ' ' - ' # Verify memcached mTLS config parameters in watcher-api config' - ' if [ -n "${APIPOD}" ]; then' - ' echo "Checking watcher-api config..."' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' # Verify mTLS config parameters in memcached backend config' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-applier config' - ' if [ -n "${APPLIERPOD}" ]; then' - ' echo "Checking watcher-applier config..."' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-decision-engine config' - ' if [ -n "${DECISIONENGINEPOD}" ]; then' - ' echo "Checking watcher-decision-engine config..."' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0' - ' logger.go:42: 16:19:57 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + echo ''Checking watcher-api config...''' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | Checking watcher-api config...' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ''' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | ++ echo' - ' logger.go:42: 16:19:58 | watcher-tls/2-patch-mtls | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | running command: [sh -c set -euxo pipefail' - ' ' - ' oc project ${NAMESPACE}' - ' # Get pod names for each watcher service' - ' APIPOD=$(oc get pods -l service=watcher-api -o jsonpath=''{.items[0].metadata.name}'')' - ' APPLIERPOD=$(oc get pods -l service=watcher-applier -o jsonpath=''{.items[0].metadata.name}'')' - ' DECISIONENGINEPOD=$(oc get pods -l service=watcher-decision-engine -o jsonpath=''{.items[0].metadata.name}'')' - ' ' - ' # Verify memcached mTLS config parameters in watcher-api config' - ' if [ -n "${APIPOD}" ]; then' - ' echo "Checking watcher-api config..."' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' # Verify mTLS config parameters in memcached backend config' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api $APIPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-applier config' - ' if [ -n "${APPLIERPOD}" ]; then' - ' echo "Checking watcher-applier config..."' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-applier $APPLIERPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ' - ' # Verify memcached mTLS config parameters in watcher-decision-engine config' - ' if [ -n "${DECISIONENGINEPOD}" ]; then' - ' echo "Checking watcher-decision-engine config..."' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_keyfile = /etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "memcache_tls_enabled = true") == 1 ]' - ' ' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_certfile=/etc/pki/tls/certs/mtls.crt") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_keyfile=/etc/pki/tls/private/mtls.key") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-decision-engine $DECISIONENGINEPOD cat /etc/watcher/watcher.conf.d/00-default.conf) | grep -c "tls_cafile=/etc/pki/tls/certs/mtls-ca.crt") == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + oc project watcher-kuttl-default' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-api -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-applier -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + APPLIERPOD=watcher-kuttl-applier-0' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ oc get pods -l service=watcher-decision-engine -o ''jsonpath={.items[0].metadata.name}''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + DECISIONENGINEPOD=watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | + echo ''Checking watcher-api config...''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | Checking watcher-api config...' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ''' - ' logger.go:42: 16:19:59 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_keyfile = /etc/pki/tls/private/mtls.key''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_enabled = true''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt' - ' logger.go:42: 16:20:00 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + ''['' -n watcher-kuttl-applier-0 '']''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | + echo ''Checking watcher-applier config...''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | Checking watcher-applier config...' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ''' - ' logger.go:42: 16:20:01 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_keyfile = /etc/pki/tls/private/mtls.key''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_enabled = true''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt' - ' logger.go:42: 16:20:02 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-applier watcher-kuttl-applier-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' -n watcher-kuttl-decision-engine-0 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + echo ''Checking watcher-decision-engine config...''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | Checking watcher-decision-engine config...' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt ''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_keyfile = /etc/pki/tls/private/mtls.key''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt''' - ' logger.go:42: 16:20:03 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c ''memcache_tls_enabled = true''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_certfile=/etc/pki/tls/certs/mtls.crt' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_keyfile=/etc/pki/tls/private/mtls.key' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ grep -c tls_cafile=/etc/pki/tls/certs/mtls-ca.crt' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | +++ oc rsh -c watcher-decision-engine watcher-kuttl-decision-engine-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_92df:7cba4b4ad4d2f809bee67ab109ac9be9@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/ca.crt ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:04 | watcher-tls/2-patch-mtls | test step completed 2-patch-mtls' - ' logger.go:42: 16:20:04 | watcher-tls/3-disable-podlevel-tls | starting test step 3-disable-podlevel-tls' - ' logger.go:42: 16:20:04 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/tls/api", "value":{ "internal": {}, "public": {} }}]''' - ' ]' - ' logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:05 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:07 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:10 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:12 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:13 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:15 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:17 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:17 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:18 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:20 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:21 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:23 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:25 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:27 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:28 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:30 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:32 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:33 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:34 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:36 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:38 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:40 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + grep public' - ' logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:47 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:20:49 | watcher-tls/3-disable-podlevel-tls | + exit 0' - ' logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # check that watcher internal endpoint does not use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep internal | [ $(grep -c https) == 0 ]' - ' # check that watcher public endpoint does use https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | grep public | [ $(grep -c https) == 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:20:51 | watcher-tls/3-disable-podlevel-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ grep watcher' - ' logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:20:53 | watcher-tls/3-disable-podlevel-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + grep internal' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:55 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + grep public' - ' logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | ++ grep -c https' - ' logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + grep infra-optim' - ' logger.go:42: 16:20:57 | watcher-tls/3-disable-podlevel-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack endpoint list' - ' logger.go:42: 16:20:59 | watcher-tls/3-disable-podlevel-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:20:59 | watcher-tls/3-disable-podlevel-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | + exit 0' - ' logger.go:42: 16:21:00 | watcher-tls/3-disable-podlevel-tls | test step completed 3-disable-podlevel-tls' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | starting test step 4-deploy-without-route' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/override", "value":{"service": { "internal": {}, "public": { "metadata": { "annotations": { "metallb.universe.tf/address-pool": "ctlplane", "metallb.universe.tf/allow-shared-ip": "ctlplane" } }, "spec": { "type": "LoadBalancer" } } } }}]''' - ' ]' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:00 | watcher-tls/4-deploy-without-route | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ grep watcher' - ' logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ awk ''{print $1}''' - ' logger.go:42: 16:21:02 | watcher-tls/4-deploy-without-route | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:21:04 | watcher-tls/4-deploy-without-route | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:21:05 | watcher-tls/4-deploy-without-route | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:21:05 | watcher-tls/4-deploy-without-route | + exit 0' - ' logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:06 | watcher-tls/4-deploy-without-route | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ awk ''{print $1}''' - ' logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:21:08 | watcher-tls/4-deploy-without-route | ++ grep watcher' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | + exit 0' - ' logger.go:42: 16:21:10 | watcher-tls/4-deploy-without-route | test step completed 4-deploy-without-route' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | starting test step 5-disable-tls' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/override", "value":{}}]''' - ' ]' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' # check that no watcher endpoint uses https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 0 ]' - ' ]' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:10 | watcher-tls/5-disable-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ grep watcher' - ' logger.go:42: 16:21:12 | watcher-tls/5-disable-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:21:14 | watcher-tls/5-disable-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:21:14 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:21:15 | watcher-tls/5-disable-tls | + exit 0' - ' logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | running command: [sh -c set -euxo pipefail' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n ${NAMESPACE} openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n ${NAMESPACE} keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n ${NAMESPACE} watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' # check that no watcher endpoint uses https' - ' oc exec -n ${NAMESPACE} openstackclient -- openstack endpoint list | grep infra-optim | [ $(grep -c https) == 0 ]' - ' ]' - ' logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:16 | watcher-tls/5-disable-tls | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ grep watcher' - ' logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:21:18 | watcher-tls/5-disable-tls | ++ awk ''{print $1}''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + SERVICEID=0bc8267151fd4fefbc0a3327396365a4' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + ''['' 0bc8267151fd4fefbc0a3327396365a4 == 0bc8267151fd4fefbc0a3327396365a4 '']''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | + exit 0' - ' logger.go:42: 16:21:20 | watcher-tls/5-disable-tls | test step completed 5-disable-tls' - ' logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | starting test step 6-cleanup-watcher' - ' logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:20 | watcher-tls/6-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:23 | watcher-tls/6-cleanup-watcher | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:21:24 | watcher-tls/6-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:21:26 | watcher-tls/6-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:21:27 | watcher-tls/6-cleanup-watcher | test step completed 6-cleanup-watcher' - ' logger.go:42: 16:21:27 | watcher-tls/7-cleanup-certs | starting test step 7-cleanup-certs' - ' logger.go:42: 16:21:27 | watcher-tls/7-cleanup-certs | test step completed 7-cleanup-certs' - ' logger.go:42: 16:21:27 | watcher-tls | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-rmquser - ' logger.go:42: 16:21:27 | watcher-rmquser | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:21:27 | watcher-rmquser/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:21:27 | watcher-rmquser/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | starting test step 1-deploy' - ' logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | running command: [sh -c set -euxo pipefail' - ' ' - ' # Wait for Watcher to be Ready' - ' kubectl wait --for=condition=Ready watcher/watcher-kuttl -n $NAMESPACE --timeout=300s' - ' ' - ' # Verify WatcherNotificationTransportURLReady condition exists and is True' - ' kubectl get watcher watcher-kuttl -n $NAMESPACE -o jsonpath=''{.status.conditions[?(@.type=="WatcherNotificationTransportURLReady")].status}'' | grep -q "True"' - ' echo "WatcherNotificationTransportURLReady condition is True"' - ' ' - ' # Count TransportURL CRs - should be exactly 2 (one for messaging, one for notifications)' - ' transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep "watcher-kuttl-watcher-transport" | wc -l)' - ' notification_transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep "watcher-kuttl-watcher-notification" | wc -l)' - ' ' - ' if [ "$transport_count" -ne "1" ]; then' - ' echo "Expected 1 watcher-transport TransportURL, found $transport_count"' - ' exit 1' - ' fi' - ' ' - ' if [ "$notification_transport_count" -ne "1" ]; then' - ' echo "Expected 1 notification-transport TransportURL, found $notification_transport_count"' - ' exit 1' - ' fi' - ' ' - ' echo "Correctly found 2 TransportURLs (separate clusters: transport and notification)"' - ' ' - ' # Verify watcher-transport has correct user and vhost' - ' transport_user=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath=''{.spec.username}'')' - ' transport_vhost=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath=''{.spec.vhost}'')' - ' if [ "$transport_user" != "watcher-rpc" ]; then' - ' echo "Expected watcher-transport username ''watcher-rpc'', found ''$transport_user''"' - ' exit 1' - ' fi' - ' if [ "$transport_vhost" != "watcher-rpc" ]; then' - ' echo "Expected watcher-transport vhost ''watcher-rpc'', found ''$transport_vhost''"' - ' exit 1' - ' fi' - ' echo "Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)"' - ' ' - ' # Verify notification-transport has correct user and vhost' - ' notif_user=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath=''{.spec.username}'')' - ' notif_vhost=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath=''{.spec.vhost}'')' - ' if [ "$notif_user" != "watcher-notifications" ]; then' - ' echo "Expected notification-transport username ''watcher-notifications'', found ''$notif_user''"' - ' exit 1' - ' fi' - ' if [ "$notif_vhost" != "watcher-notifications" ]; then' - ' echo "Expected notification-transport vhost ''watcher-notifications'', found ''$notif_vhost''"' - ' exit 1' - ' fi' - ' echo "Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)"' - ' ' - ' # Verify that watcher.conf contains the notifications transport_url' - ' WATCHER_API_POD=$(kubectl get pods -n $NAMESPACE -l "service=watcher-api" -o custom-columns=:metadata.name --no-headers | grep -v ^$ | head -1)' - ' if [ -z "${WATCHER_API_POD}" ]; then' - ' echo "No watcher-api pod found"' - ' exit 1' - ' fi' - ' # Verify RPC transport_url in DEFAULT section' - ' rpc_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -E ''^\[DEFAULT\]'' -A 50 | grep ''transport_url'' | head -1 || true)' - ' if [ -z "$rpc_transport_url" ]; then' - ' echo "transport_url not found in DEFAULT section"' - ' exit 1' - ' fi' - ' echo "Found RPC transport_url: $rpc_transport_url"' - ' ' - ' # Verify the RPC transport_url contains the correct vhost (watcher-rpc)' - ' if ! echo "$rpc_transport_url" | grep -q ''/watcher-rpc''; then' - ' echo "RPC transport_url does not contain expected vhost ''/watcher-rpc''"' - ' exit 1' - ' fi' - ' echo "Successfully verified vhost ''watcher-rpc'' in RPC transport_url"' - ' ' - ' # Verify the RPC transport_url contains the correct username (watcher-rpc)' - ' if ! echo "$rpc_transport_url" | grep -q ''watcher-rpc:''; then' - ' echo "RPC transport_url does not contain expected username ''watcher-rpc:''"' - ' exit 1' - ' fi' - ' echo "Successfully verified username ''watcher-rpc'' in RPC transport_url"' - ' ' - ' # Verify oslo_messaging_notifications section has transport_url configured' - ' notif_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -A 5 ''\[oslo_messaging_notifications\]'' | grep ''transport_url'' || true)' - ' if [ -z "$notif_transport_url" ]; then' - ' echo "transport_url not found in oslo_messaging_notifications section"' - ' exit 1' - ' fi' - ' echo "Found notifications transport_url: $notif_transport_url"' - ' ' - ' # Verify the notifications transport_url contains the correct vhost (watcher-notifications)' - ' if ! echo "$notif_transport_url" | grep -q ''/watcher-notifications''; then' - ' echo "Notifications transport_url does not contain expected vhost ''/watcher-notifications''"' - ' exit 1' - ' fi' - ' echo "Successfully verified vhost ''watcher-notifications'' in notifications transport_url"' - ' ' - ' # Verify the notifications transport_url contains the correct username (watcher-notifications)' - ' if ! echo "$notif_transport_url" | grep -q ''watcher-notifications:''; then' - ' echo "Notifications transport_url does not contain expected username ''watcher-notifications:''"' - ' exit 1' - ' fi' - ' echo "Successfully verified username ''watcher-notifications'' in notifications transport_url"' - ' ' - ' exit 0' - ' ]' - ' logger.go:42: 16:21:27 | watcher-rmquser/1-deploy | + kubectl wait --for=condition=Ready watcher/watcher-kuttl -n watcher-kuttl-default --timeout=300s' - ' logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met' - ' logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | + grep -q True' - ' logger.go:42: 16:21:51 | watcher-rmquser/1-deploy | + kubectl get watcher watcher-kuttl -n watcher-kuttl-default -o ''jsonpath={.status.conditions[?(@.type=="WatcherNotificationTransportURLReady")].status}''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo ''WatcherNotificationTransportURLReady condition is True''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | WatcherNotificationTransportURLReady condition is True' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-transport' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ wc -l' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_count=1' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ wc -l' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-notification' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notification_transport_count=1' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' 1 -ne 1 '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' 1 -ne 1 '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo ''Correctly found 2 TransportURLs (separate clusters: transport and notification)''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Correctly found 2 TransportURLs (separate clusters: transport and notification)' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o ''jsonpath={.spec.username}''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_user=watcher-rpc' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o ''jsonpath={.spec.vhost}''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + transport_vhost=watcher-rpc' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' watcher-rpc ''!='' watcher-rpc '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' watcher-rpc ''!='' watcher-rpc '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo ''Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o ''jsonpath={.spec.username}''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notif_user=watcher-notifications' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o ''jsonpath={.spec.vhost}''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + notif_vhost=watcher-notifications' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' watcher-notifications ''!='' watcher-notifications '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + ''['' watcher-notifications ''!='' watcher-notifications '']''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | + echo ''Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ grep -v ''^$''' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ head -1' - ' logger.go:42: 16:21:52 | watcher-rmquser/1-deploy | ++ kubectl get pods -n watcher-kuttl-default -l service=watcher-api -o custom-columns=:metadata.name --no-headers' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + WATCHER_API_POD=watcher-kuttl-api-0' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + ''['' -z watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep -E ''^\[DEFAULT\]'' -A 50' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ head -1' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + rpc_transport_url=''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + ''['' -z ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'' '']''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q /watcher-rpc' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Successfully verified vhost ''\''''watcher-rpc''\'''' in RPC transport_url''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified vhost ''watcher-rpc'' in RPC transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q watcher-rpc:' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Successfully verified username ''\''''watcher-rpc''\'''' in RPC transport_url''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified username ''watcher-rpc'' in RPC transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep -A 5 ''\[oslo_messaging_notifications\]''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | ++ grep transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + notif_transport_url=''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + ''['' -z ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'' '']''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q /watcher-notifications' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Successfully verified vhost ''\''''watcher-notifications''\'''' in notifications transport_url''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified vhost ''watcher-notifications'' in notifications transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + grep -q watcher-notifications:' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + echo ''Successfully verified username ''\''''watcher-notifications''\'''' in notifications transport_url''' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | Successfully verified username ''watcher-notifications'' in notifications transport_url' - ' logger.go:42: 16:21:53 | watcher-rmquser/1-deploy | + exit 0' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | running command: [sh -c set -euxo pipefail' - ' ' - ' # Wait for Watcher to be Ready' - ' kubectl wait --for=condition=Ready watcher/watcher-kuttl -n $NAMESPACE --timeout=300s' - ' ' - ' # Verify WatcherNotificationTransportURLReady condition exists and is True' - ' kubectl get watcher watcher-kuttl -n $NAMESPACE -o jsonpath=''{.status.conditions[?(@.type=="WatcherNotificationTransportURLReady")].status}'' | grep -q "True"' - ' echo "WatcherNotificationTransportURLReady condition is True"' - ' ' - ' # Count TransportURL CRs - should be exactly 2 (one for messaging, one for notifications)' - ' transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep "watcher-kuttl-watcher-transport" | wc -l)' - ' notification_transport_count=$(kubectl get transporturl -n $NAMESPACE -o name | grep "watcher-kuttl-watcher-notification" | wc -l)' - ' ' - ' if [ "$transport_count" -ne "1" ]; then' - ' echo "Expected 1 watcher-transport TransportURL, found $transport_count"' - ' exit 1' - ' fi' - ' ' - ' if [ "$notification_transport_count" -ne "1" ]; then' - ' echo "Expected 1 notification-transport TransportURL, found $notification_transport_count"' - ' exit 1' - ' fi' - ' ' - ' echo "Correctly found 2 TransportURLs (separate clusters: transport and notification)"' - ' ' - ' # Verify watcher-transport has correct user and vhost' - ' transport_user=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath=''{.spec.username}'')' - ' transport_vhost=$(kubectl get transporturl watcher-kuttl-watcher-transport -n $NAMESPACE -o jsonpath=''{.spec.vhost}'')' - ' if [ "$transport_user" != "watcher-rpc" ]; then' - ' echo "Expected watcher-transport username ''watcher-rpc'', found ''$transport_user''"' - ' exit 1' - ' fi' - ' if [ "$transport_vhost" != "watcher-rpc" ]; then' - ' echo "Expected watcher-transport vhost ''watcher-rpc'', found ''$transport_vhost''"' - ' exit 1' - ' fi' - ' echo "Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)"' - ' ' - ' # Verify notification-transport has correct user and vhost' - ' notif_user=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath=''{.spec.username}'')' - ' notif_vhost=$(kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n $NAMESPACE -o jsonpath=''{.spec.vhost}'')' - ' if [ "$notif_user" != "watcher-notifications" ]; then' - ' echo "Expected notification-transport username ''watcher-notifications'', found ''$notif_user''"' - ' exit 1' - ' fi' - ' if [ "$notif_vhost" != "watcher-notifications" ]; then' - ' echo "Expected notification-transport vhost ''watcher-notifications'', found ''$notif_vhost''"' - ' exit 1' - ' fi' - ' echo "Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)"' - ' ' - ' # Verify that watcher.conf contains the notifications transport_url' - ' WATCHER_API_POD=$(kubectl get pods -n $NAMESPACE -l "service=watcher-api" -o custom-columns=:metadata.name --no-headers | grep -v ^$ | head -1)' - ' if [ -z "${WATCHER_API_POD}" ]; then' - ' echo "No watcher-api pod found"' - ' exit 1' - ' fi' - ' # Verify RPC transport_url in DEFAULT section' - ' rpc_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -E ''^\[DEFAULT\]'' -A 50 | grep ''transport_url'' | head -1 || true)' - ' if [ -z "$rpc_transport_url" ]; then' - ' echo "transport_url not found in DEFAULT section"' - ' exit 1' - ' fi' - ' echo "Found RPC transport_url: $rpc_transport_url"' - ' ' - ' # Verify the RPC transport_url contains the correct vhost (watcher-rpc)' - ' if ! echo "$rpc_transport_url" | grep -q ''/watcher-rpc''; then' - ' echo "RPC transport_url does not contain expected vhost ''/watcher-rpc''"' - ' exit 1' - ' fi' - ' echo "Successfully verified vhost ''watcher-rpc'' in RPC transport_url"' - ' ' - ' # Verify the RPC transport_url contains the correct username (watcher-rpc)' - ' if ! echo "$rpc_transport_url" | grep -q ''watcher-rpc:''; then' - ' echo "RPC transport_url does not contain expected username ''watcher-rpc:''"' - ' exit 1' - ' fi' - ' echo "Successfully verified username ''watcher-rpc'' in RPC transport_url"' - ' ' - ' # Verify oslo_messaging_notifications section has transport_url configured' - ' notif_transport_url=$(kubectl exec -n $NAMESPACE ${WATCHER_API_POD} -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf | grep -A 5 ''\[oslo_messaging_notifications\]'' | grep ''transport_url'' || true)' - ' if [ -z "$notif_transport_url" ]; then' - ' echo "transport_url not found in oslo_messaging_notifications section"' - ' exit 1' - ' fi' - ' echo "Found notifications transport_url: $notif_transport_url"' - ' ' - ' # Verify the notifications transport_url contains the correct vhost (watcher-notifications)' - ' if ! echo "$notif_transport_url" | grep -q ''/watcher-notifications''; then' - ' echo "Notifications transport_url does not contain expected vhost ''/watcher-notifications''"' - ' exit 1' - ' fi' - ' echo "Successfully verified vhost ''watcher-notifications'' in notifications transport_url"' - ' ' - ' # Verify the notifications transport_url contains the correct username (watcher-notifications)' - ' if ! echo "$notif_transport_url" | grep -q ''watcher-notifications:''; then' - ' echo "Notifications transport_url does not contain expected username ''watcher-notifications:''"' - ' exit 1' - ' fi' - ' echo "Successfully verified username ''watcher-notifications'' in notifications transport_url"' - ' ' - ' exit 0' - ' ]' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + kubectl wait --for=condition=Ready watcher/watcher-kuttl -n watcher-kuttl-default --timeout=300s' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | watcher.watcher.openstack.org/watcher-kuttl condition met' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + kubectl get watcher watcher-kuttl -n watcher-kuttl-default -o ''jsonpath={.status.conditions[?(@.type=="WatcherNotificationTransportURLReady")].status}''' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + grep -q True' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + echo ''WatcherNotificationTransportURLReady condition is True''' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | WatcherNotificationTransportURLReady condition is True' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-transport' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ wc -l' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | + transport_count=1' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ grep watcher-kuttl-watcher-notification' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ wc -l' - ' logger.go:42: 16:21:54 | watcher-rmquser/1-deploy | ++ kubectl get transporturl -n watcher-kuttl-default -o name' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notification_transport_count=1' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' 1 -ne 1 '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' 1 -ne 1 '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Correctly found 2 TransportURLs (separate clusters: transport and notification)''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Correctly found 2 TransportURLs (separate clusters: transport and notification)' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o ''jsonpath={.spec.username}''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + transport_user=watcher-rpc' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-transport -n watcher-kuttl-default -o ''jsonpath={.spec.vhost}''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + transport_vhost=watcher-rpc' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' watcher-rpc ''!='' watcher-rpc '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' watcher-rpc ''!='' watcher-rpc '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Watcher transport has correct user (watcher-rpc) and vhost (watcher-rpc)' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o ''jsonpath={.spec.username}''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notif_user=watcher-notifications' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get transporturl watcher-kuttl-watcher-notification-rabbitmq-notifications -n watcher-kuttl-default -o ''jsonpath={.spec.vhost}''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + notif_vhost=watcher-notifications' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' watcher-notifications ''!='' watcher-notifications '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' watcher-notifications ''!='' watcher-notifications '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Notification transport has correct user (watcher-notifications) and vhost (watcher-notifications)' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -v ''^$''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl get pods -n watcher-kuttl-default -l service=watcher-api -o custom-columns=:metadata.name --no-headers' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ head -1' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + WATCHER_API_POD=watcher-kuttl-api-0' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' -z watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ head -1' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep transport_url' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -E ''^\[DEFAULT\]'' -A 50' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + rpc_transport_url=''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + ''['' -z ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1'' '']''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Found RPC transport_url: transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + grep -q /watcher-rpc' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Successfully verified vhost ''\''''watcher-rpc''\'''' in RPC transport_url''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Successfully verified vhost ''watcher-rpc'' in RPC transport_url' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + grep -q watcher-rpc:' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-rpc:3v320pCCv-k8XQA5ZC5ZgMG988bWL87e@rabbitmq.watcher-kuttl-default.svc:5671/watcher-rpc?ssl=1''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | + echo ''Successfully verified username ''\''''watcher-rpc''\'''' in RPC transport_url''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | Successfully verified username ''watcher-rpc'' in RPC transport_url' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep -A 5 ''\[oslo_messaging_notifications\]''' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ grep transport_url' - ' logger.go:42: 16:21:55 | watcher-rmquser/1-deploy | ++ kubectl exec -n watcher-kuttl-default watcher-kuttl-api-0 -c watcher-api -- cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + notif_transport_url=''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + ''['' -z ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1'' '']''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo ''Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Found notifications transport_url: transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + grep -q /watcher-notifications' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo ''Successfully verified vhost ''\''''watcher-notifications''\'''' in notifications transport_url''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Successfully verified vhost ''watcher-notifications'' in notifications transport_url' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + grep -q watcher-notifications:' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo ''transport_url = rabbit://watcher-notifications:S1IIyezEXhXsAVBQzExoKD685nXbbjCW@rabbitmq-notifications.watcher-kuttl-default.svc:5671/watcher-notifications?ssl=1''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + echo ''Successfully verified username ''\''''watcher-notifications''\'''' in notifications transport_url''' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | Successfully verified username ''watcher-notifications'' in notifications transport_url' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | + exit 0' - ' logger.go:42: 16:21:56 | watcher-rmquser/1-deploy | test step completed 1-deploy' - ' logger.go:42: 16:21:56 | watcher-rmquser/2-cleanup-watcher | starting test step 2-cleanup-watcher' - ' logger.go:42: 16:22:01 | watcher-rmquser/2-cleanup-watcher | test step completed 2-cleanup-watcher' - ' logger.go:42: 16:22:01 | watcher-rmquser | skipping kubernetes event logging' - === CONT kuttl/harness/watcher - ' logger.go:42: 16:22:01 | watcher | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:22:01 | watcher/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:22:01 | watcher/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:22:01 | watcher/1-deploy-with-defaults | starting test step 1-deploy-with-defaults' - ' logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:02 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:04 | watcher/1-deploy-with-defaults | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:05 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:07 | watcher/1-deploy-with-defaults | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:08 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:22:10 | watcher/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:22:12 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56' - ' logger.go:42: 16:22:12 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | + ''['' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 '']''' - ' logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:22:13 | watcher/1-deploy-with-defaults | + ''['' -n '''' '']''' - ' logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:14 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:22:16 | watcher/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:22:18 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56' - ' logger.go:42: 16:22:18 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ grep -c ''region_name = regionOne''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' 9 -ge 1 '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:22:19 | watcher/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:20 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:22:22 | watcher/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + ''['' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 '']''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ grep -c ''region_name = regionOne''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | + ''['' 9 -ge 1 '']''' - ' logger.go:42: 16:22:25 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:22:26 | watcher/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:22:26 | watcher/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.my\.cnf}''|base64 -d|grep -c ''ssl=1'')" == 1 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem'')" == 2 ]' - ' [ "$(oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o jsonpath=''{.data.00-default\.conf}''|base64 -d|grep -c ''region_name = regionOne'')" -ge 1 ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:22:27 | watcher/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:22:29 | watcher/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + SERVICEID=50cd2d8870524a79924faff92882dc56' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + ''['' 50cd2d8870524a79924faff92882dc56 == 50cd2d8870524a79924faff92882dc56 '']''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.my\.cnf}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c ssl=1' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c ''cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ base64 -d' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default secret watcher-kuttl-api-config-data -o ''jsonpath={.data.00-default\.conf}''' - ' logger.go:42: 16:22:31 | watcher/1-deploy-with-defaults | ++ grep -c ''region_name = regionOne''' - ' logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + ''['' 9 -ge 1 '']''' - ' logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:22:32 | watcher/1-deploy-with-defaults | test step completed 1-deploy-with-defaults' - ' logger.go:42: 16:22:32 | watcher/2-cleanup-watcher | starting test step 2-cleanup-watcher' - ' logger.go:42: 16:22:32 | watcher/2-cleanup-watcher | test step completed 2-cleanup-watcher' - ' logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | starting test step 3-precreate-mariadbaccount' - ' logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | MariaDBAccount:watcher-kuttl-default/watcher-precreated created' - ' logger.go:42: 16:22:32 | watcher/3-precreate-mariadbaccount | test step completed 3-precreate-mariadbaccount' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | starting test step 4-deploy-with-precreated-account' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Secret:watcher-kuttl-default/custom-prometheus-config created' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:32 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | error: Internal error occurred: error executing command in container: container is not created or running' - ' logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | ++ echo' - ' logger.go:42: 16:22:34 | watcher/4-deploy-with-precreated-account | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:35 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:36 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:37 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:37 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:38 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:39 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:40 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:41 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:42 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:43 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:44 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:44 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:45 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:46 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:47 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:48 | watcher/4-deploy-with-precreated-account | + APIPOD=' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | error: unable to upgrade connection: container not found ("watcher-api")' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | ++ echo' - ' logger.go:42: 16:22:49 | watcher/4-deploy-with-precreated-account | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:22:50 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:50 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:22:51 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:22:52 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:22:52 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:22:53 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:22:54 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:55 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:22:56 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:57 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:22:57 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:22:58 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:22:59 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:22:59 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:23:00 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:23:01 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:23:02 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:23:03 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:23:04 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:23:05 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | running command: [sh -c set -euxo pipefail' - ' oc project watcher-kuttl-default' - ' APIPOD=$(oc get pods -n watcher-kuttl-default -l "service=watcher-api" -ocustom-columns=:metadata.name|grep -v ^$|head -1)' - ' if [ -n "${APIPOD}" ]; then' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/01-global-custom.conf) |grep -c "^# Global config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/02-service-custom.conf) |grep -c "^# Service config") == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/watcher/watcher.conf.d/00-default.conf) |grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem'') == 1 ]' - ' [ $(echo $(oc rsh -c watcher-api ${APIPOD} cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf) |grep -czPo ''TimeOut 80'') == 1 ]' - ' else' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + oc project watcher-kuttl-default' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | Already on project "watcher-kuttl-default" on server "https://api.crc.testing:6443".' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ oc get pods -n watcher-kuttl-default -l service=watcher-api -ocustom-columns=:metadata.name' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ head -1' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -v ''^$''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + APIPOD=watcher-kuttl-api-0' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + ''['' -n watcher-kuttl-api-0 '']''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Global config''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/01-global-custom.conf' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Global config' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -c ''^# Service config''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/02-service-custom.conf' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' Service config' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''\[prometheus_client\]\s+host\s+=\s+metric-storage-prometheus.watcher-kuttl-default.svc\s+port\s+=\s+9090\s+cafile\s+=\s+/etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/watcher/watcher.conf.d/00-default.conf' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ echo ''[DEFAULT]'' state_path = /var/lib/watcher transport_url = ''rabbit://default_user_yf15aOSfqh1lP-rMLgj:9ik4H84CQBhJph2TWkj8zaS96s0e3C6e@rabbitmq.watcher-kuttl-default.svc:5671/?ssl=1'' control_exchange = watcher debug = True log_file = /var/log/watcher/watcher-kuttl-api.log ''#'' empty notification_level means that no notification will be sent notification_level = ''[database]'' connection = ''mysql+pymysql://watcher_test:4341713c0331ec810a387bb85d10e1d1@openstack.watcher-kuttl-default.svc/watcher?read_default_file=/etc/my.cnf'' ''[oslo_policy]'' policy_file = /etc/watcher/policy.yaml.sample ''[oslo_messaging_notifications]'' driver = noop ''[oslo_messaging_rabbit]'' rabbit_quorum_queue=true rabbit_transient_quorum_queue=true amqp_durable_queues=true ''[keystone_authtoken]'' memcached_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 tls_enabled=true memcache_tls_certfile = /etc/pki/tls/certs/mtls.crt memcache_tls_keyfile = /etc/pki/tls/private/mtls.key memcache_tls_cafile = /etc/pki/tls/certs/mtls-ca.crt memcache_tls_enabled = true project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal region_name = regionOne cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[watcher_clients_auth]'' project_domain_name = Default project_name = service user_domain_name = Default password = password username = watcher auth_type = password auth_url = https://keystone-internal.watcher-kuttl-default.svc:5000 interface = internal cafile = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ''[oslo_concurrency]'' lock_path = /var/lib/watcher/tmp ''[watcher_datasources]'' datasources = prometheus ''[cache]'' backend = oslo_cache.memcache_pool memcache_servers=memcached-0.memcached.watcher-kuttl-default.svc:11212 memcache_socket_timeout = 0.5 memcache_pool_connection_get_timeout = 1 enabled=true tls_enabled=true tls_certfile=/etc/pki/tls/certs/mtls.crt tls_keyfile=/etc/pki/tls/private/mtls.key tls_cafile=/etc/pki/tls/certs/mtls-ca.crt memcache_dead_retry = 30 ''[prometheus_client]'' host = metric-storage-prometheus.watcher-kuttl-default.svc port = 9090 cafile = /etc/pki/ca-trust/extracted/pem/prometheus/internal-ca-bundle.pem ''[aetos_client]'' endpoint_type = internal region_name = regionOne ''[cinder_client]'' endpoint_type = internal region_name = regionOne ''[glance_client]'' endpoint_type = internal region_name = regionOne ''[ironic_client]'' endpoint_type = internal region_name = regionOne ''[keystone_client]'' interface = internal region_name = regionOne ''[neutron_client]'' endpoint_type = internal region_name = regionOne ''[nova_client]'' endpoint_type = internal region_name = regionOne ''[placement_client]'' interface = internal region_name = regionOne ''[watcher_cluster_data_model_collectors.compute]'' period = 900 ''[watcher_cluster_data_model_collectors.baremetal]'' period = 900 ''[watcher_cluster_data_model_collectors.storage]'' period = 900' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | ++ grep -czPo ''TimeOut 80''' - ' logger.go:42: 16:23:07 | watcher/4-deploy-with-precreated-account | +++ oc rsh -c watcher-api watcher-kuttl-api-0 cat /etc/httpd/conf.d/10-watcher-wsgi-main.conf' - ' logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | ++ echo ''#'' internal vhost watcher-internal.watcher-kuttl-default.svc configuration '''' ServerName watcher-internal.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess internal display-name=internal group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup internal WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' '''' ''#'' public vhost watcher-public.watcher-kuttl-default.svc configuration '''' ServerName watcher-public.watcher-kuttl-default.svc ''##'' Vhost docroot DocumentRoot ''"/var/www/cgi-bin"'' ''#'' Set the timeout for the watcher-api TimeOut 80 ''##'' Directories, there should at least be a declaration for /var/www/cgi-bin '''' Options -Indexes +FollowSymLinks +MultiViews AllowOverride None Require all granted '''' ''##'' Logging ErrorLog /dev/stdout ServerSignature Off CustomLog /dev/stdout combined ''env=!forwarded'' CustomLog /dev/stdout proxy env=forwarded ''##'' set watcher log level to debug LogLevel debug ''##'' WSGI configuration WSGIApplicationGroup ''%{GLOBAL}'' WSGIDaemonProcess public display-name=public group=watcher processes=2 threads=1 user=watcher WSGIProcessGroup public WSGIScriptAlias / ''"/usr/bin/watcher-api-wsgi"'' ''''' - ' logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:23:08 | watcher/4-deploy-with-precreated-account | test step completed 4-deploy-with-precreated-account' - ' logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | starting test step 5-cleanup-watcher' - ' logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:23:08 | watcher/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:23:11 | watcher/5-cleanup-watcher | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:23:12 | watcher/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:23:14 | watcher/5-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:23:15 | watcher/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:23:17 | watcher/5-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:23:18 | watcher/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:23:21 | watcher/5-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:23:21 | watcher/5-cleanup-watcher | test step completed 5-cleanup-watcher' - ' logger.go:42: 16:23:21 | watcher | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-cinder - ' logger.go:42: 16:23:21 | watcher-cinder | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:23:21 | watcher-cinder/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:23:21 | watcher-cinder/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | starting test step 1-deploy-watcher-no-cinder' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:21 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:22 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:23 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:24 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:25 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:26 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:27 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:27 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:28 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:29 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:30 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:31 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | error: error from server (NotFound): pods "watcher-kuttl-decision-engine-0" not found in namespace "watcher-kuttl-default"' - ' logger.go:42: 16:23:32 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | Error from server (BadRequest): container "watcher-decision-engine" in pod "watcher-kuttl-decision-engine-0" is waiting to start: ContainerCreating' - ' logger.go:42: 16:23:33 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:34 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:35 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:36 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:37 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 1 == 2 '']''' - ' logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:38 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:39 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:40 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:41 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:42 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:43 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 | grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:23:44 | watcher-cinder/1-deploy-watcher-no-cinder | test step completed 1-deploy-watcher-no-cinder' - ' logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | starting test step 2-deploy-cinder' - ' logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | OpenStackControlPlane:watcher-kuttl-default/openstack updated' - ' logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:44 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:45 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:46 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:47 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:48 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:49 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:50 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:51 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:52 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:53 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:54 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:55 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:56 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:57 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:58 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:23:59 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:00 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:01 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:02 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:03 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:04 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:05 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:06 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:07 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:08 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:09 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:10 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:11 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:12 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:13 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:14 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:15 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:16 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:17 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:18 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:19 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:20 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:21 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:22 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:23 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:24 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:25 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:26 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:27 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:28 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:29 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:30 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:31 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:32 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:33 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:34 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:35 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:36 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:37 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:38 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:39 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:40 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:41 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:42 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:43 | watcher-cinder/2-deploy-cinder | + ''['' 2 == 0 '']''' - ' logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | Error from server (BadRequest): container "watcher-decision-engine" in pod "watcher-kuttl-decision-engine-0" is waiting to start: ContainerCreating' - ' logger.go:42: 16:24:44 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | Error from server (BadRequest): container "watcher-decision-engine" in pod "watcher-kuttl-decision-engine-0" is waiting to start: ContainerCreating' - ' logger.go:42: 16:24:45 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:46 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:47 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:48 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:49 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:50 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:51 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:52 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:53 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:54 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:55 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision detects that there is a cinder service and' - ' # does not log that storage collector is skipped' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 0 ]' - ' ]' - ' logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:24:56 | watcher-cinder/2-deploy-cinder | test step completed 2-deploy-cinder' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | starting test step 3-remove-cinder' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | OpenStackControlPlane:watcher-kuttl-default/openstack updated' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:56 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:57 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:58 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:24:59 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:00 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:01 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:02 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:03 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:04 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:05 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:06 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:07 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | Error from server (BadRequest): container "watcher-decision-engine" in pod "watcher-kuttl-decision-engine-0" is waiting to start: ContainerCreating' - ' logger.go:42: 16:25:08 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | Error from server (BadRequest): container "watcher-decision-engine" in pod "watcher-kuttl-decision-engine-0" is waiting to start: ContainerCreating' - ' logger.go:42: 16:25:09 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:10 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:11 | watcher-cinder/3-remove-cinder | + ''['' 0 == 2 '']''' - ' logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:12 | watcher-cinder/3-remove-cinder | + ''['' 1 == 2 '']''' - ' logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:13 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:14 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:15 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:16 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:17 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:18 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:19 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | running command: [sh -c set -euxo pipefail' - ' # check that the decision engine correctly detects that there is no cinder service' - ' [ "$(oc logs -n $NAMESPACE watcher-kuttl-decision-engine-0 |grep -c ''Block storage service is not enabled, skipping storage collector'')" == 2 ]' - ' ]' - ' logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | ++ oc logs -n watcher-kuttl-default watcher-kuttl-decision-engine-0' - ' logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | ++ grep -c ''Block storage service is not enabled, skipping storage collector''' - ' logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | + ''['' 2 == 2 '']''' - ' logger.go:42: 16:25:20 | watcher-cinder/3-remove-cinder | test step completed 3-remove-cinder' - ' logger.go:42: 16:25:20 | watcher-cinder/4-cleanup-watcher | starting test step 4-cleanup-watcher' - ' logger.go:42: 16:25:27 | watcher-cinder/4-cleanup-watcher | test step completed 4-cleanup-watcher' - ' logger.go:42: 16:25:27 | watcher-cinder | skipping kubernetes event logging' - === CONT kuttl/harness/watcher-api-scaling - ' logger.go:42: 16:25:27 | watcher-api-scaling | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:25:27 | watcher-api-scaling/0-cleanup-watcher | starting test step 0-cleanup-watcher' - ' logger.go:42: 16:25:27 | watcher-api-scaling/0-cleanup-watcher | test step completed 0-cleanup-watcher' - ' logger.go:42: 16:25:27 | watcher-api-scaling/1-deploy-with-defaults | starting test step 1-deploy-with-defaults' - ' logger.go:42: 16:25:27 | watcher-api-scaling/1-deploy-with-defaults | Watcher:watcher-kuttl-default/watcher-kuttl created' - ' logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:28 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:30 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:31 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:33 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 0 == 1 '']''' - ' logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:34 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:25:36 | watcher-api-scaling/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6' - ' logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + ''['' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 '']''' - ' logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:25:38 | watcher-api-scaling/1-deploy-with-defaults | + ''['' -n '''' '']''' - ' logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:39 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:25:42 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + ''['' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 '']''' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:25:44 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:25:45 | watcher-api-scaling/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:25:45 | watcher-api-scaling/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:46 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:25:47 | watcher-api-scaling/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:25:49 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6' - ' logger.go:42: 16:25:49 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + ''['' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 '']''' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:25:50 | watcher-api-scaling/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:51 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:25:53 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6' - ' logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | + ''['' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 '']''' - ' logger.go:42: 16:25:55 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:25:56 | watcher-api-scaling/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | running command: [sh -c set -euxo pipefail' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type |[ $(grep -c ^watcher) == 1 ]' - ' SERVICEID=$(oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID | grep watcher| awk ''{print $1}'')' - ' [ $(oc get -n watcher-kuttl-default keystoneservice watcher -o jsonpath={.status.serviceID}) == ${SERVICEID} ]' - ' [ -n "$(oc get -n watcher-kuttl-default watcher watcher-kuttl -o jsonpath={.status.hash.dbsync})" ]' - ' # If we are running the container locally, skip following test' - ' if [ "$(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher)" == "" ]; then' - ' exit 0' - ' fi' - ' env_variables=$(oc set env $(oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher) -n openstack-operators --list)' - ' counter=0' - ' for i in ${env_variables}; do' - ' if echo ${i} | grep ''_URL_DEFAULT'' &> /dev/null; then' - ' echo ${i}' - ' counter=$((counter + 1))' - ' fi' - ' done' - ' if [ ${counter} -lt 3 ]; then' - ' echo "Error: Less than 3 _URL_DEFAULT variables found."' - ' exit 1' - ' else' - ' echo "Success: ${counter} _URL_DEFAULT variables found."' - ' fi' - ' ]' - ' logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:25:57 | watcher-api-scaling/1-deploy-with-defaults | ++ grep -c ''^watcher''' - ' logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | + ''['' 1 == 1 '']''' - ' logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type -c ID' - ' logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ awk ''{print $1}''' - ' logger.go:42: 16:25:59 | watcher-api-scaling/1-deploy-with-defaults | ++ grep watcher' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + SERVICEID=fc1daa96ef8c455ca09bffb24ea64ff6' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default keystoneservice watcher -o ''jsonpath={.status.serviceID}''' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + ''['' fc1daa96ef8c455ca09bffb24ea64ff6 == fc1daa96ef8c455ca09bffb24ea64ff6 '']''' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get -n watcher-kuttl-default watcher watcher-kuttl -o ''jsonpath={.status.hash.dbsync}''' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | + ''['' -n n8dh549h5hbfh56fh86h5f9hc8h76h694hcdh589h655h666hf7h5ch94h588h64fhb7h684h576h54h5f7h64h5d8hd5h5c8h654h554h658h647q '']''' - ' logger.go:42: 16:26:01 | watcher-api-scaling/1-deploy-with-defaults | ++ oc get pods -n openstack-operators -o name -l openstack.org/operator-name=watcher' - ' logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | + ''['' '''' == '''' '']''' - ' logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | + exit 0' - ' logger.go:42: 16:26:02 | watcher-api-scaling/1-deploy-with-defaults | test step completed 1-deploy-with-defaults' - ' logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | starting test step 2-scale-up-watcher-api' - ' logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/replicas", "value":3}]''' - ' ]' - ' logger.go:42: 16:26:02 | watcher-api-scaling/2-scale-up-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:26:13 | watcher-api-scaling/2-scale-up-watcher-api | test step completed 2-scale-up-watcher-api' - ' logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | starting test step 3-scale-down-watcher-api' - ' logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/replicas", "value":1}]''' - ' ]' - ' logger.go:42: 16:26:13 | watcher-api-scaling/3-scale-down-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:26:16 | watcher-api-scaling/3-scale-down-watcher-api | test step completed 3-scale-down-watcher-api' - ' logger.go:42: 16:26:16 | watcher-api-scaling/4-scale-down-zero-watcher-api | starting test step 4-scale-down-zero-watcher-api' - ' logger.go:42: 16:26:16 | watcher-api-scaling/4-scale-down-zero-watcher-api | running command: [sh -c oc patch watcher -n $NAMESPACE watcher-kuttl --type=''json'' -p=''[{"op": "replace", "path": "/spec/apiServiceTemplate/replicas", "value":0}]''' - ' ]' - ' logger.go:42: 16:26:17 | watcher-api-scaling/4-scale-down-zero-watcher-api | watcher.watcher.openstack.org/watcher-kuttl patched' - ' logger.go:42: 16:26:18 | watcher-api-scaling/4-scale-down-zero-watcher-api | test step completed 4-scale-down-zero-watcher-api' - ' logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | starting test step 5-cleanup-watcher' - ' logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:26:18 | watcher-api-scaling/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:26:20 | watcher-api-scaling/5-cleanup-watcher | + ''['' 1 == 0 '']''' - ' logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | running command: [sh -c set -ex' - ' oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type | [ $(grep -c ^watcher) == 0 ]' - ' ]' - ' logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | + oc exec -n watcher-kuttl-default openstackclient -- openstack service list -f value -c Name -c Type' - ' logger.go:42: 16:26:22 | watcher-api-scaling/5-cleanup-watcher | ++ grep -c ''^watcher''' - ' logger.go:42: 16:26:24 | watcher-api-scaling/5-cleanup-watcher | + ''['' 0 == 0 '']''' - ' logger.go:42: 16:26:24 | watcher-api-scaling/5-cleanup-watcher | test step completed 5-cleanup-watcher' - ' logger.go:42: 16:26:24 | watcher-api-scaling | skipping kubernetes event logging' - === CONT kuttl/harness/deps - ' logger.go:42: 16:26:24 | deps | Ignoring infra.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | deps | Ignoring keystone.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | deps | Ignoring kustomization.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | deps | Ignoring namespace.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | deps | Ignoring telemetry.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | deps | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:26:24 | deps | skipping kubernetes event logging' - === CONT kuttl/harness/common - ' logger.go:42: 16:26:24 | common | Ignoring cleanup-assert.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | common | Ignoring cleanup-errors.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | common | Ignoring cleanup-watcher.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | common | Ignoring deploy-with-defaults.yaml as it does not match file name regexp: ^(\d+)-(?:[^\.]+)(?:\.yaml)?$' - ' logger.go:42: 16:26:24 | common | Skipping creation of user-supplied namespace: watcher-kuttl-default' - ' logger.go:42: 16:26:24 | common | skipping kubernetes event logging' - === NAME kuttl - ' harness.go:406: run tests finished' - ' harness.go:514: cleaning up' - ' harness.go:571: removing temp folder: ""' - '--- FAIL: kuttl (1493.95s)' - ' --- FAIL: kuttl/harness (0.00s)' - ' --- FAIL: kuttl/harness/appcred-tests (962.71s)' - ' --- PASS: kuttl/harness/watcher-notification (37.61s)' - ' --- PASS: kuttl/harness/watcher-topology (31.57s)' - ' --- PASS: kuttl/harness/watcher-tls-certs-change (36.81s)' - ' --- PASS: kuttl/harness/watcher-tls (127.41s)' - ' --- PASS: kuttl/harness/watcher-rmquser (34.91s)' - ' --- PASS: kuttl/harness/watcher (79.13s)' - ' --- PASS: kuttl/harness/watcher-cinder (126.78s)' - ' --- PASS: kuttl/harness/watcher-api-scaling (56.98s)' - ' --- PASS: kuttl/harness/deps (0.00s)' - ' --- PASS: kuttl/harness/common (0.00s)' - FAIL 2026-03-20 16:26:25,970 p=40515 u=zuul n=ansible | NO MORE HOSTS LEFT ************************************************************* 2026-03-20 16:26:25,971 p=40515 u=zuul n=ansible | PLAY RECAP ********************************************************************* 2026-03-20 16:26:25,971 p=40515 u=zuul n=ansible | controller : ok=2 changed=0 unreachable=0 failed=1 skipped=1 rescued=0 ignored=0 2026-03-20 16:26:25,971 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:26:25 +0000 (0:24:55.644) 0:24:56.041 ********** 2026-03-20 16:26:25,971 p=40515 u=zuul n=ansible | =============================================================================== 2026-03-20 16:26:25,971 p=40515 u=zuul n=ansible | run kuttl test suite from operator Makefile -------------------------- 1495.64s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | run_hook : Loop on hooks for pre_kuttl_from_operator -------------------- 0.14s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | run_hook : Assert single hooks are all mappings ------------------------- 0.10s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | run_hook : Assert parameters are valid ---------------------------------- 0.07s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | Run hooks before running kuttl tests ------------------------------------ 0.04s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | Friday 20 March 2026 16:26:25 +0000 (0:24:55.644) 0:24:56.040 ********** 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | =============================================================================== 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | ansible.builtin.command ---------------------------------------------- 1495.64s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | run_hook ---------------------------------------------------------------- 0.31s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | ansible.builtin.include_role -------------------------------------------- 0.04s 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2026-03-20 16:26:25,972 p=40515 u=zuul n=ansible | total ---------------------------------------------------------------- 1496.00s