2025-11-25 09:37:59,062 p=30597 u=zuul n=ansible | Starting galaxy collection install process 2025-11-25 09:37:59,063 p=30597 u=zuul n=ansible | Process install dependency map 2025-11-25 09:38:22,987 p=30597 u=zuul n=ansible | Starting collection install process 2025-11-25 09:38:22,987 p=30597 u=zuul n=ansible | Installing 'cifmw.general:1.0.0+8eeaca43' to '/home/zuul/.ansible/collections/ansible_collections/cifmw/general' 2025-11-25 09:38:23,522 p=30597 u=zuul n=ansible | Created collection for cifmw.general:1.0.0+8eeaca43 at /home/zuul/.ansible/collections/ansible_collections/cifmw/general 2025-11-25 09:38:23,522 p=30597 u=zuul n=ansible | cifmw.general:1.0.0+8eeaca43 was installed successfully 2025-11-25 09:38:23,523 p=30597 u=zuul n=ansible | Installing 'containers.podman:1.16.2' to '/home/zuul/.ansible/collections/ansible_collections/containers/podman' 2025-11-25 09:38:23,582 p=30597 u=zuul n=ansible | Created collection for containers.podman:1.16.2 at /home/zuul/.ansible/collections/ansible_collections/containers/podman 2025-11-25 09:38:23,582 p=30597 u=zuul n=ansible | containers.podman:1.16.2 was installed successfully 2025-11-25 09:38:23,582 p=30597 u=zuul n=ansible | Installing 'community.general:10.0.1' to '/home/zuul/.ansible/collections/ansible_collections/community/general' 2025-11-25 09:38:24,440 p=30597 u=zuul n=ansible | Created collection for community.general:10.0.1 at /home/zuul/.ansible/collections/ansible_collections/community/general 2025-11-25 09:38:24,440 p=30597 u=zuul n=ansible | community.general:10.0.1 was installed successfully 2025-11-25 09:38:24,440 p=30597 u=zuul n=ansible | Installing 'ansible.posix:1.6.2' to '/home/zuul/.ansible/collections/ansible_collections/ansible/posix' 2025-11-25 09:38:24,501 p=30597 u=zuul n=ansible | Created collection for ansible.posix:1.6.2 at /home/zuul/.ansible/collections/ansible_collections/ansible/posix 2025-11-25 09:38:24,501 p=30597 u=zuul n=ansible | ansible.posix:1.6.2 was installed successfully 2025-11-25 09:38:24,501 p=30597 u=zuul n=ansible | Installing 'ansible.utils:5.1.2' to '/home/zuul/.ansible/collections/ansible_collections/ansible/utils' 2025-11-25 09:38:24,643 p=30597 u=zuul n=ansible | Created collection for ansible.utils:5.1.2 at /home/zuul/.ansible/collections/ansible_collections/ansible/utils 2025-11-25 09:38:24,643 p=30597 u=zuul n=ansible | ansible.utils:5.1.2 was installed successfully 2025-11-25 09:38:24,643 p=30597 u=zuul n=ansible | Installing 'community.libvirt:1.3.0' to '/home/zuul/.ansible/collections/ansible_collections/community/libvirt' 2025-11-25 09:38:24,669 p=30597 u=zuul n=ansible | Created collection for community.libvirt:1.3.0 at /home/zuul/.ansible/collections/ansible_collections/community/libvirt 2025-11-25 09:38:24,669 p=30597 u=zuul n=ansible | community.libvirt:1.3.0 was installed successfully 2025-11-25 09:38:24,669 p=30597 u=zuul n=ansible | Installing 'community.crypto:2.22.3' to '/home/zuul/.ansible/collections/ansible_collections/community/crypto' 2025-11-25 09:38:24,855 p=30597 u=zuul n=ansible | Created collection for community.crypto:2.22.3 at /home/zuul/.ansible/collections/ansible_collections/community/crypto 2025-11-25 09:38:24,855 p=30597 u=zuul n=ansible | community.crypto:2.22.3 was installed successfully 2025-11-25 09:38:24,855 p=30597 u=zuul n=ansible | Installing 'kubernetes.core:5.0.0' to '/home/zuul/.ansible/collections/ansible_collections/kubernetes/core' 2025-11-25 09:38:24,993 p=30597 u=zuul n=ansible | Created collection for kubernetes.core:5.0.0 at /home/zuul/.ansible/collections/ansible_collections/kubernetes/core 2025-11-25 09:38:24,993 p=30597 u=zuul n=ansible | kubernetes.core:5.0.0 was installed successfully 2025-11-25 09:38:24,993 p=30597 u=zuul n=ansible | Installing 'ansible.netcommon:7.1.0' to '/home/zuul/.ansible/collections/ansible_collections/ansible/netcommon' 2025-11-25 09:38:25,071 p=30597 u=zuul n=ansible | Created collection for ansible.netcommon:7.1.0 at /home/zuul/.ansible/collections/ansible_collections/ansible/netcommon 2025-11-25 09:38:25,072 p=30597 u=zuul n=ansible | ansible.netcommon:7.1.0 was installed successfully 2025-11-25 09:38:25,072 p=30597 u=zuul n=ansible | Installing 'openstack.config_template:2.1.1' to '/home/zuul/.ansible/collections/ansible_collections/openstack/config_template' 2025-11-25 09:38:25,100 p=30597 u=zuul n=ansible | Created collection for openstack.config_template:2.1.1 at /home/zuul/.ansible/collections/ansible_collections/openstack/config_template 2025-11-25 09:38:25,100 p=30597 u=zuul n=ansible | openstack.config_template:2.1.1 was installed successfully 2025-11-25 09:38:25,101 p=30597 u=zuul n=ansible | Installing 'junipernetworks.junos:9.1.0' to '/home/zuul/.ansible/collections/ansible_collections/junipernetworks/junos' 2025-11-25 09:38:25,375 p=30597 u=zuul n=ansible | Created collection for junipernetworks.junos:9.1.0 at /home/zuul/.ansible/collections/ansible_collections/junipernetworks/junos 2025-11-25 09:38:25,375 p=30597 u=zuul n=ansible | junipernetworks.junos:9.1.0 was installed successfully 2025-11-25 09:38:25,375 p=30597 u=zuul n=ansible | Installing 'cisco.ios:9.0.3' to '/home/zuul/.ansible/collections/ansible_collections/cisco/ios' 2025-11-25 09:38:25,711 p=30597 u=zuul n=ansible | Created collection for cisco.ios:9.0.3 at /home/zuul/.ansible/collections/ansible_collections/cisco/ios 2025-11-25 09:38:25,711 p=30597 u=zuul n=ansible | cisco.ios:9.0.3 was installed successfully 2025-11-25 09:38:25,712 p=30597 u=zuul n=ansible | Installing 'mellanox.onyx:1.0.0' to '/home/zuul/.ansible/collections/ansible_collections/mellanox/onyx' 2025-11-25 09:38:25,748 p=30597 u=zuul n=ansible | Created collection for mellanox.onyx:1.0.0 at /home/zuul/.ansible/collections/ansible_collections/mellanox/onyx 2025-11-25 09:38:25,748 p=30597 u=zuul n=ansible | mellanox.onyx:1.0.0 was installed successfully 2025-11-25 09:38:25,748 p=30597 u=zuul n=ansible | Installing 'community.okd:4.0.0' to '/home/zuul/.ansible/collections/ansible_collections/community/okd' 2025-11-25 09:38:25,777 p=30597 u=zuul n=ansible | Created collection for community.okd:4.0.0 at /home/zuul/.ansible/collections/ansible_collections/community/okd 2025-11-25 09:38:25,778 p=30597 u=zuul n=ansible | community.okd:4.0.0 was installed successfully 2025-11-25 09:38:25,778 p=30597 u=zuul n=ansible | Installing '@NAMESPACE@.@NAME@:3.1.4' to '/home/zuul/.ansible/collections/ansible_collections/@NAMESPACE@/@NAME@' 2025-11-25 09:38:25,888 p=30597 u=zuul n=ansible | Created collection for @NAMESPACE@.@NAME@:3.1.4 at /home/zuul/.ansible/collections/ansible_collections/@NAMESPACE@/@NAME@ 2025-11-25 09:38:25,888 p=30597 u=zuul n=ansible | @NAMESPACE@.@NAME@:3.1.4 was installed successfully 2025-11-25 09:38:37,964 p=31439 u=zuul n=ansible | PLAY [Bootstrap playbook] ****************************************************** 2025-11-25 09:38:37,982 p=31439 u=zuul n=ansible | TASK [Gathering Facts ] ******************************************************** 2025-11-25 09:38:37,982 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:37 +0000 (0:00:00.037) 0:00:00.037 ****** 2025-11-25 09:38:37,982 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:37 +0000 (0:00:00.036) 0:00:00.036 ****** 2025-11-25 09:38:38,944 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:38,965 p=31439 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] *** 2025-11-25 09:38:38,965 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:38 +0000 (0:00:00.982) 0:00:01.020 ****** 2025-11-25 09:38:38,965 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:38 +0000 (0:00:00.982) 0:00:01.019 ****** 2025-11-25 09:38:38,989 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:38,996 p=31439 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 }}] *** 2025-11-25 09:38:38,996 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:38 +0000 (0:00:00.030) 0:00:01.051 ****** 2025-11-25 09:38:38,996 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:38 +0000 (0:00:00.030) 0:00:01.050 ****** 2025-11-25 09:38:39,051 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:39,057 p=31439 u=zuul n=ansible | TASK [install_ca : Ensure target directory exists path={{ cifmw_install_ca_trust_dir }}, state=directory, mode=0755] *** 2025-11-25 09:38:39,057 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.060) 0:00:01.112 ****** 2025-11-25 09:38:39,057 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.060) 0:00:01.110 ****** 2025-11-25 09:38:39,471 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:39,478 p=31439 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] *** 2025-11-25 09:38:39,478 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.420) 0:00:01.533 ****** 2025-11-25 09:38:39,478 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.421) 0:00:01.531 ****** 2025-11-25 09:38:39,495 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:39,501 p=31439 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] *** 2025-11-25 09:38:39,501 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.023) 0:00:01.557 ****** 2025-11-25 09:38:39,501 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.023) 0:00:01.555 ****** 2025-11-25 09:38:39,519 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:39,525 p=31439 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] *** 2025-11-25 09:38:39,525 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.024) 0:00:01.581 ****** 2025-11-25 09:38:39,526 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.024) 0:00:01.579 ****** 2025-11-25 09:38:39,545 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:39,553 p=31439 u=zuul n=ansible | TASK [install_ca : Update ca bundle _raw_params=update-ca-trust] *************** 2025-11-25 09:38:39,553 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.027) 0:00:01.608 ****** 2025-11-25 09:38:39,553 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:39 +0000 (0:00:00.027) 0:00:01.606 ****** 2025-11-25 09:38:41,247 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:41,260 p=31439 u=zuul n=ansible | TASK [repo_setup : Ensure directories are present path={{ cifmw_repo_setup_basedir }}/{{ item }}, state=directory, mode=0755] *** 2025-11-25 09:38:41,260 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:41 +0000 (0:00:01.706) 0:00:03.315 ****** 2025-11-25 09:38:41,260 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:41 +0000 (0:00:01.707) 0:00:03.313 ****** 2025-11-25 09:38:41,475 p=31439 u=zuul n=ansible | changed: [localhost] => (item=tmp) 2025-11-25 09:38:41,667 p=31439 u=zuul n=ansible | changed: [localhost] => (item=artifacts/repositories) 2025-11-25 09:38:41,868 p=31439 u=zuul n=ansible | changed: [localhost] => (item=venv/repo_setup) 2025-11-25 09:38:41,876 p=31439 u=zuul n=ansible | TASK [repo_setup : Make sure git-core package is installed name=git-core, state=present] *** 2025-11-25 09:38:41,877 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:41 +0000 (0:00:00.616) 0:00:03.932 ****** 2025-11-25 09:38:41,877 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:41 +0000 (0:00:00.616) 0:00:03.930 ****** 2025-11-25 09:38:42,914 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:42,921 p=31439 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 }}] *** 2025-11-25 09:38:42,921 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:42 +0000 (0:00:01.044) 0:00:04.976 ****** 2025-11-25 09:38:42,921 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:42 +0000 (0:00:01.044) 0:00:04.975 ****** 2025-11-25 09:38:43,848 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:43,856 p=31439 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] *** 2025-11-25 09:38:43,856 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:43 +0000 (0:00:00.934) 0:00:05.911 ****** 2025-11-25 09:38:43,856 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:43 +0000 (0:00:00.934) 0:00:05.909 ****** 2025-11-25 09:38:53,520 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:53,527 p=31439 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] *** 2025-11-25 09:38:53,527 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:53 +0000 (0:00:09.671) 0:00:15.583 ****** 2025-11-25 09:38:53,527 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:53 +0000 (0:00:09.671) 0:00:15.581 ****** 2025-11-25 09:38:54,392 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:54,399 p=31439 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 }}] *** 2025-11-25 09:38:54,399 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:54 +0000 (0:00:00.871) 0:00:16.454 ****** 2025-11-25 09:38:54,399 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:54 +0000 (0:00:00.871) 0:00:16.453 ****** 2025-11-25 09:38:54,422 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:54,430 p=31439 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 }}] *** 2025-11-25 09:38:54,430 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:54 +0000 (0:00:00.031) 0:00:16.485 ****** 2025-11-25 09:38:54,430 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:54 +0000 (0:00:00.031) 0:00:16.484 ****** 2025-11-25 09:38:55,132 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:55,139 p=31439 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] *** 2025-11-25 09:38:55,139 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.708) 0:00:17.194 ****** 2025-11-25 09:38:55,139 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.708) 0:00:17.193 ****** 2025-11-25 09:38:55,171 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:55,179 p=31439 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 }}] *** 2025-11-25 09:38:55,180 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.040) 0:00:17.235 ****** 2025-11-25 09:38:55,180 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.040) 0:00:17.233 ****** 2025-11-25 09:38:55,214 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:55,221 p=31439 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] *** 2025-11-25 09:38:55,221 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.041) 0:00:17.276 ****** 2025-11-25 09:38:55,221 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.041) 0:00:17.274 ****** 2025-11-25 09:38:55,251 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:55,258 p=31439 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] *** 2025-11-25 09:38:55,258 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.037) 0:00:17.313 ****** 2025-11-25 09:38:55,258 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.037) 0:00:17.312 ****** 2025-11-25 09:38:55,770 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:55,778 p=31439 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] *** 2025-11-25 09:38:55,778 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.519) 0:00:17.833 ****** 2025-11-25 09:38:55,778 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:55 +0000 (0:00:00.519) 0:00:17.831 ****** 2025-11-25 09:38:56,474 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:56,481 p=31439 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] *** 2025-11-25 09:38:56,481 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.703) 0:00:18.536 ****** 2025-11-25 09:38:56,481 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.703) 0:00:18.535 ****** 2025-11-25 09:38:56,497 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,504 p=31439 u=zuul n=ansible | TASK [repo_setup : Slurp current podified hash src={{ cifmw_repo_setup_basedir }}/artifacts/repositories/delorean.repo.md5] *** 2025-11-25 09:38:56,504 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.559 ****** 2025-11-25 09:38:56,504 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.558 ****** 2025-11-25 09:38:56,520 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,528 p=31439 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) }}] *** 2025-11-25 09:38:56,528 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.023) 0:00:18.583 ****** 2025-11-25 09:38:56,528 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.023) 0:00:18.581 ****** 2025-11-25 09:38:56,545 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,553 p=31439 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] *** 2025-11-25 09:38:56,553 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.025) 0:00:18.608 ****** 2025-11-25 09:38:56,553 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.025) 0:00:18.607 ****** 2025-11-25 09:38:56,580 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:56,588 p=31439 u=zuul n=ansible | TASK [repo_setup : Create download directory path={{ cifmw_repo_setup_rhos_release_path }}, state=directory, mode=0755] *** 2025-11-25 09:38:56,588 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.034) 0:00:18.643 ****** 2025-11-25 09:38:56,588 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.034) 0:00:18.642 ****** 2025-11-25 09:38:56,605 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,612 p=31439 u=zuul n=ansible | TASK [repo_setup : Print the URL to request msg={{ cifmw_repo_setup_rhos_release_rpm }}] *** 2025-11-25 09:38:56,612 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.024) 0:00:18.667 ****** 2025-11-25 09:38:56,612 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.024) 0:00:18.666 ****** 2025-11-25 09:38:56,627 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,634 p=31439 u=zuul n=ansible | TASK [Download the RPM name=krb_request] *************************************** 2025-11-25 09:38:56,635 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.690 ****** 2025-11-25 09:38:56,635 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.688 ****** 2025-11-25 09:38:56,649 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,656 p=31439 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 }}] *** 2025-11-25 09:38:56,657 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.021) 0:00:18.712 ****** 2025-11-25 09:38:56,657 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.021) 0:00:18.710 ****** 2025-11-25 09:38:56,670 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,677 p=31439 u=zuul n=ansible | TASK [repo_setup : Get rhos-release tool version _raw_params=rhos-release --version] *** 2025-11-25 09:38:56,677 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.020) 0:00:18.732 ****** 2025-11-25 09:38:56,677 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.020) 0:00:18.731 ****** 2025-11-25 09:38:56,692 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,699 p=31439 u=zuul n=ansible | TASK [repo_setup : Print rhos-release tool version msg={{ rr_version.stdout }}] *** 2025-11-25 09:38:56,699 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.755 ****** 2025-11-25 09:38:56,699 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.022) 0:00:18.753 ****** 2025-11-25 09:38:56,714 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,725 p=31439 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 }}] *** 2025-11-25 09:38:56,725 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.025) 0:00:18.780 ****** 2025-11-25 09:38:56,725 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.025) 0:00:18.779 ****** 2025-11-25 09:38:56,739 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:56,746 p=31439 u=zuul n=ansible | TASK [repo_setup : Check for /etc/ci/mirror_info.sh path=/etc/ci/mirror_info.sh] *** 2025-11-25 09:38:56,746 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.020) 0:00:18.801 ****** 2025-11-25 09:38:56,746 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.020) 0:00:18.800 ****** 2025-11-25 09:38:56,930 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:56,937 p=31439 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 ] *** 2025-11-25 09:38:56,937 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.191) 0:00:18.993 ****** 2025-11-25 09:38:56,937 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:56 +0000 (0:00:00.191) 0:00:18.991 ****** 2025-11-25 09:38:57,140 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:57,147 p=31439 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 ] *** 2025-11-25 09:38:57,147 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:57 +0000 (0:00:00.209) 0:00:19.202 ****** 2025-11-25 09:38:57,147 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:57 +0000 (0:00:00.209) 0:00:19.201 ****** 2025-11-25 09:38:57,408 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:57,416 p=31439 u=zuul n=ansible | TASK [repo_setup : Check for gating.repo file on content provider url=http://{{ content_provider_registry_ip }}:8766/gating.repo] *** 2025-11-25 09:38:57,416 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:57 +0000 (0:00:00.268) 0:00:19.471 ****** 2025-11-25 09:38:57,416 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:57 +0000 (0:00:00.268) 0:00:19.469 ****** 2025-11-25 09:38:58,043 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => changed: false elapsed: 0 msg: 'Status code was -1 and not [200]: Request failed: ' redirected: false status: -1 url: http://38.129.56.103:8766/gating.repo 2025-11-25 09:38:58,043 p=31439 u=zuul n=ansible | ...ignoring 2025-11-25 09:38:58,051 p=31439 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] *** 2025-11-25 09:38:58,051 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.635) 0:00:20.106 ****** 2025-11-25 09:38:58,051 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.635) 0:00:20.105 ****** 2025-11-25 09:38:58,078 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:58,085 p=31439 u=zuul n=ansible | TASK [repo_setup : Check for DLRN repo at the destination path={{ cifmw_repo_setup_output }}/delorean.repo] *** 2025-11-25 09:38:58,086 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.034) 0:00:20.141 ****** 2025-11-25 09:38:58,086 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.034) 0:00:20.139 ****** 2025-11-25 09:38:58,113 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:58,121 p=31439 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] *** 2025-11-25 09:38:58,121 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.035) 0:00:20.176 ****** 2025-11-25 09:38:58,121 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.035) 0:00:20.175 ****** 2025-11-25 09:38:58,158 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:58,165 p=31439 u=zuul n=ansible | TASK [repo_setup : Check for DLRN component repo path={{ cifmw_repo_setup_output }}/{{ _comp_repo }}] *** 2025-11-25 09:38:58,165 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.043) 0:00:20.220 ****** 2025-11-25 09:38:58,165 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.043) 0:00:20.219 ****** 2025-11-25 09:38:58,202 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:58,207 p=31439 u=zuul n=ansible | TASK [repo_setup : Lower the priority of componennt repos to allow installation from gating repo path={{ cifmw_repo_setup_output }}//{{ _comp_repo }}, regexp=priority=1, replace=priority=2] *** 2025-11-25 09:38:58,208 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.042) 0:00:20.263 ****** 2025-11-25 09:38:58,208 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.042) 0:00:20.261 ****** 2025-11-25 09:38:58,243 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:38:58,250 p=31439 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] *** 2025-11-25 09:38:58,250 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.042) 0:00:20.305 ****** 2025-11-25 09:38:58,250 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.042) 0:00:20.304 ****** 2025-11-25 09:38:58,542 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:38:58,549 p=31439 u=zuul n=ansible | TASK [repo_setup : Remove existing repos from /etc/yum.repos.d directory path={{ item }}, state=absent] *** 2025-11-25 09:38:58,549 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.298) 0:00:20.604 ****** 2025-11-25 09:38:58,549 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:58 +0000 (0:00:00.298) 0:00:20.602 ****** 2025-11-25 09:38:58,883 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/etc/yum.repos.d/centos-addons.repo) 2025-11-25 09:38:59,097 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/etc/yum.repos.d/centos.repo) 2025-11-25 09:38:59,105 p=31439 u=zuul n=ansible | TASK [repo_setup : Cleanup existing metadata _raw_params=dnf clean metadata] *** 2025-11-25 09:38:59,105 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.555) 0:00:21.160 ****** 2025-11-25 09:38:59,105 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.555) 0:00:21.158 ****** 2025-11-25 09:38:59,597 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:59,604 p=31439 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] *** 2025-11-25 09:38:59,604 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.499) 0:00:21.659 ****** 2025-11-25 09:38:59,604 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.499) 0:00:21.658 ****** 2025-11-25 09:38:59,889 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:38:59,901 p=31439 u=zuul n=ansible | TASK [ci_setup : Gather variables for each operating system _raw_params={{ item }}] *** 2025-11-25 09:38:59,901 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.296) 0:00:21.956 ****** 2025-11-25 09:38:59,901 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.296) 0:00:21.955 ****** 2025-11-25 09:38:59,936 p=31439 u=zuul n=ansible | ok: [localhost] => (item=/home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_setup/vars/redhat.yml) 2025-11-25 09:38:59,944 p=31439 u=zuul n=ansible | TASK [ci_setup : List packages to install var=cifmw_ci_setup_packages] ********* 2025-11-25 09:38:59,944 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.043) 0:00:21.999 ****** 2025-11-25 09:38:59,944 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.043) 0:00:21.998 ****** 2025-11-25 09:38:59,962 p=31439 u=zuul n=ansible | ok: [localhost] => cifmw_ci_setup_packages: - bash-completion - ca-certificates - git-core - make - tar - tmux - python3-pip 2025-11-25 09:38:59,969 p=31439 u=zuul n=ansible | TASK [ci_setup : Install needed packages name={{ cifmw_ci_setup_packages }}, state=latest] *** 2025-11-25 09:38:59,969 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.024) 0:00:22.024 ****** 2025-11-25 09:38:59,969 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:38:59 +0000 (0:00:00.024) 0:00:22.022 ****** 2025-11-25 09:39:32,078 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:32,085 p=31439 u=zuul n=ansible | TASK [ci_setup : Gather version of openshift client _raw_params=oc version --client -o yaml] *** 2025-11-25 09:39:32,085 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:32.116) 0:00:54.140 ****** 2025-11-25 09:39:32,085 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:32.116) 0:00:54.139 ****** 2025-11-25 09:39:32,314 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:32,323 p=31439 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] *** 2025-11-25 09:39:32,323 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:00.238) 0:00:54.379 ****** 2025-11-25 09:39:32,323 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:00.238) 0:00:54.377 ****** 2025-11-25 09:39:32,534 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:32,542 p=31439 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] *** 2025-11-25 09:39:32,542 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:00.218) 0:00:54.597 ****** 2025-11-25 09:39:32,542 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:32 +0000 (0:00:00.218) 0:00:54.596 ****** 2025-11-25 09:39:38,068 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:38,078 p=31439 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] *** 2025-11-25 09:39:38,079 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:05.536) 0:01:00.134 ****** 2025-11-25 09:39:38,079 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:05.536) 0:01:00.132 ****** 2025-11-25 09:39:38,106 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,115 p=31439 u=zuul n=ansible | TASK [ci_setup : Create completion file] *************************************** 2025-11-25 09:39:38,115 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.036) 0:01:00.171 ****** 2025-11-25 09:39:38,115 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.036) 0:01:00.169 ****** 2025-11-25 09:39:38,460 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:38,467 p=31439 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] *** 2025-11-25 09:39:38,467 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.351) 0:01:00.522 ****** 2025-11-25 09:39:38,467 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.351) 0:01:00.520 ****** 2025-11-25 09:39:38,822 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:38,830 p=31439 u=zuul n=ansible | TASK [ci_setup : Check rhsm status _raw_params=subscription-manager status] **** 2025-11-25 09:39:38,830 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.363) 0:01:00.885 ****** 2025-11-25 09:39:38,830 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.363) 0:01:00.883 ****** 2025-11-25 09:39:38,848 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,857 p=31439 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([])) }}] *** 2025-11-25 09:39:38,857 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.027) 0:01:00.912 ****** 2025-11-25 09:39:38,857 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.027) 0:01:00.911 ****** 2025-11-25 09:39:38,875 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,884 p=31439 u=zuul n=ansible | TASK [ci_setup : Enabling the required repositories. name={{ item }}, state={{ rhsm_repo_state | default('enabled') }}] *** 2025-11-25 09:39:38,884 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.027) 0:01:00.940 ****** 2025-11-25 09:39:38,885 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.027) 0:01:00.938 ****** 2025-11-25 09:39:38,904 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,913 p=31439 u=zuul n=ansible | TASK [ci_setup : Get current /etc/redhat-release _raw_params=cat /etc/redhat-release] *** 2025-11-25 09:39:38,913 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.028) 0:01:00.968 ****** 2025-11-25 09:39:38,913 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.028) 0:01:00.966 ****** 2025-11-25 09:39:38,933 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,942 p=31439 u=zuul n=ansible | TASK [ci_setup : Print current /etc/redhat-release msg={{ _current_rh_release.stdout }}] *** 2025-11-25 09:39:38,942 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.029) 0:01:00.997 ****** 2025-11-25 09:39:38,942 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.029) 0:01:00.996 ****** 2025-11-25 09:39:38,967 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:38,975 p=31439 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') }}] *** 2025-11-25 09:39:38,976 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.033) 0:01:01.031 ****** 2025-11-25 09:39:38,976 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:38 +0000 (0:00:00.033) 0:01:01.029 ****** 2025-11-25 09:39:39,009 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:39,017 p=31439 u=zuul n=ansible | TASK [ci_setup : Manage directories path={{ item }}, state={{ directory_state }}, mode=0755, owner={{ ansible_user_id }}, group={{ ansible_user_id }}] *** 2025-11-25 09:39:39,017 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:39 +0000 (0:00:00.041) 0:01:01.072 ****** 2025-11-25 09:39:39,017 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:39 +0000 (0:00:00.041) 0:01:01.071 ****** 2025-11-25 09:39:39,286 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/home/zuul/ci-framework-data/artifacts/manifests/openstack/cr) 2025-11-25 09:39:39,539 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/home/zuul/ci-framework-data/logs) 2025-11-25 09:39:39,758 p=31439 u=zuul n=ansible | ok: [localhost] => (item=/home/zuul/ci-framework-data/tmp) 2025-11-25 09:39:39,977 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/home/zuul/ci-framework-data/volumes) 2025-11-25 09:39:40,202 p=31439 u=zuul n=ansible | ok: [localhost] => (item=/home/zuul/ci-framework-data/artifacts/parameters) 2025-11-25 09:39:40,219 p=31439 u=zuul n=ansible | TASK [Prepare install_yamls make targets name=install_yamls, apply={'tags': ['bootstrap']}] *** 2025-11-25 09:39:40,219 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:40 +0000 (0:00:01.201) 0:01:02.274 ****** 2025-11-25 09:39:40,219 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:40 +0000 (0:00:01.201) 0:01:02.273 ****** 2025-11-25 09:39:40,363 p=31439 u=zuul n=ansible | TASK [install_yamls : Ensure directories exist path={{ item }}, state=directory, mode=0755] *** 2025-11-25 09:39:40,364 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:40 +0000 (0:00:00.144) 0:01:02.419 ****** 2025-11-25 09:39:40,364 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:40 +0000 (0:00:00.144) 0:01:02.417 ****** 2025-11-25 09:39:40,679 p=31439 u=zuul n=ansible | ok: [localhost] => (item=/home/zuul/ci-framework-data/artifacts) 2025-11-25 09:39:40,883 p=31439 u=zuul n=ansible | changed: [localhost] => (item=/home/zuul/ci-framework-data/artifacts/roles/install_yamls_makes/tasks) 2025-11-25 09:39:41,101 p=31439 u=zuul n=ansible | ok: [localhost] => (item=/home/zuul/ci-framework-data/artifacts/parameters) 2025-11-25 09:39:41,112 p=31439 u=zuul n=ansible | TASK [Create variables with local repos based on Zuul items name=install_yamls, tasks_from=zuul_set_operators_repo.yml] *** 2025-11-25 09:39:41,112 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.748) 0:01:03.167 ****** 2025-11-25 09:39:41,112 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.748) 0:01:03.165 ****** 2025-11-25 09:39:41,156 p=31439 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) }}] *** 2025-11-25 09:39:41,156 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.044) 0:01:03.211 ****** 2025-11-25 09:39:41,156 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.044) 0:01:03.210 ****** 2025-11-25 09:39:41,216 p=31439 u=zuul n=ansible | ok: [localhost] => (item={'branch': 'main', 'change': '567', 'change_url': 'https://github.com/openstack-k8s-operators/keystone-operator/pull/567', 'commit_id': 'aab5cfe1d4a691d84a96189c698c58d261af9e66', 'patchset': 'aab5cfe1d4a691d84a96189c698c58d261af9e66', 'project': {'canonical_hostname': 'github.com', 'canonical_name': 'github.com/openstack-k8s-operators/keystone-operator', 'name': 'openstack-k8s-operators/keystone-operator', 'short_name': 'keystone-operator', 'src_dir': 'src/github.com/openstack-k8s-operators/keystone-operator'}, 'topic': None}) 2025-11-25 09:39:41,230 p=31439 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 }} ] *** 2025-11-25 09:39:41,230 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.074) 0:01:03.285 ****** 2025-11-25 09:39:41,230 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.074) 0:01:03.284 ****** 2025-11-25 09:39:41,296 p=31439 u=zuul n=ansible | ok: [localhost] => (item={'branch': 'main', 'change': '567', 'change_url': 'https://github.com/openstack-k8s-operators/keystone-operator/pull/567', 'commit_id': 'aab5cfe1d4a691d84a96189c698c58d261af9e66', 'patchset': 'aab5cfe1d4a691d84a96189c698c58d261af9e66', 'project': {'canonical_hostname': 'github.com', 'canonical_name': 'github.com/openstack-k8s-operators/keystone-operator', 'name': 'openstack-k8s-operators/keystone-operator', 'short_name': 'keystone-operator', 'src_dir': 'src/github.com/openstack-k8s-operators/keystone-operator'}, 'topic': None}) => msg: | _repo_operator_name: keystone _repo_operator_info: [{'key': 'KEYSTONE_REPO', 'value': '/home/zuul/src/github.com/openstack-k8s-operators/keystone-operator'}, {'key': 'KEYSTONE_BRANCH', 'value': ''}] cifmw_install_yamls_operators_repo: {'KEYSTONE_REPO': '/home/zuul/src/github.com/openstack-k8s-operators/keystone-operator', 'KEYSTONE_BRANCH': ''} 2025-11-25 09:39:41,312 p=31439 u=zuul n=ansible | TASK [Customize install_yamls devsetup vars if needed name=install_yamls, tasks_from=customize_devsetup_vars.yml] *** 2025-11-25 09:39:41,313 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.082) 0:01:03.368 ****** 2025-11-25 09:39:41,313 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.082) 0:01:03.366 ****** 2025-11-25 09:39:41,366 p=31439 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] *** 2025-11-25 09:39:41,366 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.053) 0:01:03.421 ****** 2025-11-25 09:39:41,366 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.053) 0:01:03.419 ****** 2025-11-25 09:39:41,392 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:41,400 p=31439 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] *** 2025-11-25 09:39:41,401 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.034) 0:01:03.456 ****** 2025-11-25 09:39:41,401 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.034) 0:01:03.454 ****** 2025-11-25 09:39:41,431 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:41,439 p=31439 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] *** 2025-11-25 09:39:41,439 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.038) 0:01:03.494 ****** 2025-11-25 09:39:41,439 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.038) 0:01:03.492 ****** 2025-11-25 09:39:41,469 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:41,476 p=31439 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] *** 2025-11-25 09:39:41,476 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.036) 0:01:03.531 ****** 2025-11-25 09:39:41,476 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.036) 0:01:03.529 ****** 2025-11-25 09:39:41,501 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:41,516 p=31439 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) }}] *** 2025-11-25 09:39:41,516 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.040) 0:01:03.572 ****** 2025-11-25 09:39:41,516 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.040) 0:01:03.570 ****** 2025-11-25 09:39:41,587 p=31439 u=zuul n=ansible | ok: [localhost] => (item={'BMO_SETUP': False}) 2025-11-25 09:39:41,596 p=31439 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] *** 2025-11-25 09:39:41,596 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.080) 0:01:03.652 ****** 2025-11-25 09:39:41,597 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.080) 0:01:03.650 ****** 2025-11-25 09:39:41,645 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:41,653 p=31439 u=zuul n=ansible | TASK [install_yamls : Get environment structure base_path={{ cifmw_install_yamls_repo }}] *** 2025-11-25 09:39:41,653 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.056) 0:01:03.708 ****** 2025-11-25 09:39:41,653 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:41 +0000 (0:00:00.056) 0:01:03.706 ****** 2025-11-25 09:39:42,280 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:42,290 p=31439 u=zuul n=ansible | TASK [install_yamls : Ensure Output directory exists path={{ cifmw_install_yamls_out_dir }}, state=directory, mode=0755] *** 2025-11-25 09:39:42,291 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.637) 0:01:04.346 ****** 2025-11-25 09:39:42,291 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.637) 0:01:04.344 ****** 2025-11-25 09:39:42,534 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:42,544 p=31439 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] *** 2025-11-25 09:39:42,544 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.253) 0:01:04.599 ****** 2025-11-25 09:39:42,544 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.253) 0:01:04.598 ****** 2025-11-25 09:39:42,592 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:42,615 p=31439 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] *** 2025-11-25 09:39:42,615 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.071) 0:01:04.670 ****** 2025-11-25 09:39:42,615 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:42 +0000 (0:00:00.071) 0:01:04.669 ****** 2025-11-25 09:39:43,053 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:43,061 p=31439 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] *** 2025-11-25 09:39:43,061 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.446) 0:01:05.117 ****** 2025-11-25 09:39:43,061 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.446) 0:01:05.115 ****** 2025-11-25 09:39:43,088 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:43,098 p=31439 u=zuul n=ansible | TASK [install_yamls : Show the env structure var=cifmw_install_yamls_environment] *** 2025-11-25 09:39:43,099 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.037) 0:01:05.154 ****** 2025-11-25 09:39:43,099 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.037) 0:01:05.152 ****** 2025-11-25 09:39:43,121 p=31439 u=zuul n=ansible | ok: [localhost] => cifmw_install_yamls_environment: BMO_SETUP: false CHECKOUT_FROM_OPENSTACK_REF: 'true' KEYSTONE_BRANCH: '' KEYSTONE_REPO: /home/zuul/src/github.com/openstack-k8s-operators/keystone-operator OPENSTACK_K8S_BRANCH: main OUT: /home/zuul/ci-framework-data/artifacts/manifests OUTPUT_DIR: /home/zuul/ci-framework-data/artifacts/edpm 2025-11-25 09:39:43,129 p=31439 u=zuul n=ansible | TASK [install_yamls : Show the env structure defaults var=cifmw_install_yamls_defaults] *** 2025-11-25 09:39:43,130 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.030) 0:01:05.185 ****** 2025-11-25 09:39:43,130 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.030) 0:01:05.183 ****** 2025-11-25 09:39:43,165 p=31439 u=zuul n=ansible | ok: [localhost] => 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 ANSIBLEEE: config/samples/_v1beta1_ansibleee.yaml ANSIBLEEE_BRANCH: main ANSIBLEEE_CR: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-ansibleee-operator/config/samples/_v1beta1_ansibleee.yaml ANSIBLEEE_IMG: quay.io/openstack-k8s-operators/openstack-ansibleee-operator-index:latest ANSIBLEEE_KUTTL_CONF: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-ansibleee-operator/kuttl-test.yaml ANSIBLEEE_KUTTL_DIR: /home/zuul/ci-framework-data/artifacts/manifests/operator/openstack-ansibleee-operator/test/kuttl/tests ANSIBLEEE_KUTTL_NAMESPACE: ansibleee-kuttl-tests ANSIBLEEE_REPO: https://github.com/openstack-k8s-operators/openstack-ansibleee-operator ANSIBLEE_COMMIT_HASH: '' 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_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_BRANCH: stable/2024.1 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_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: '' 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: /home/zuul/src/github.com/openstack-k8s-operators/keystone-operator 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' 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/src/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/kuttl/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' tripleo_deploy: 'export REGISTRY_PWD:' 2025-11-25 09:39:43,176 p=31439 u=zuul n=ansible | TASK [install_yamls : Generate make targets install_yamls_path={{ cifmw_install_yamls_repo }}, output_directory={{ cifmw_install_yamls_tasks_out }}] *** 2025-11-25 09:39:43,176 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.046) 0:01:05.231 ****** 2025-11-25 09:39:43,176 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.046) 0:01:05.230 ****** 2025-11-25 09:39:43,591 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:43,600 p=31439 u=zuul n=ansible | TASK [install_yamls : Debug generate_make module var=cifmw_generate_makes] ***** 2025-11-25 09:39:43,601 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.424) 0:01:05.656 ****** 2025-11-25 09:39:43,601 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.424) 0:01:05.654 ****** 2025-11-25 09:39:43,623 p=31439 u=zuul n=ansible | ok: [localhost] => 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 - 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 - ansibleee_kuttl_run - ansibleee_kuttl_cleanup - ansibleee_kuttl_prep - ansibleee_kuttl - glance_kuttl_run - glance_kuttl - manila_kuttl_run - manila_kuttl - swift_kuttl_run - swift_kuttl - horizon_kuttl_run - horizon_kuttl - openstack_kuttl_run - 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 - ansibleee_prep - ansibleee - ansibleee_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 2025-11-25 09:39:43,632 p=31439 u=zuul n=ansible | TASK [install_yamls : Create the install_yamls parameters file dest={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/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] *** 2025-11-25 09:39:43,633 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.031) 0:01:05.688 ****** 2025-11-25 09:39:43,633 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:43 +0000 (0:00:00.031) 0:01:05.686 ****** 2025-11-25 09:39:44,060 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:44,068 p=31439 u=zuul n=ansible | TASK [install_yamls : Create empty cifmw_install_yamls_environment if needed cifmw_install_yamls_environment={}] *** 2025-11-25 09:39:44,068 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.435) 0:01:06.124 ****** 2025-11-25 09:39:44,069 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.435) 0:01:06.122 ****** 2025-11-25 09:39:44,094 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:44,116 p=31439 u=zuul n=ansible | TASK [discover_latest_image : Get latest image url={{ cifmw_discover_latest_image_base_url }}, image_prefix={{ cifmw_discover_latest_image_qcow_prefix }}, images_file={{ cifmw_discover_latest_image_images_file }}] *** 2025-11-25 09:39:44,116 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.047) 0:01:06.171 ****** 2025-11-25 09:39:44,116 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.047) 0:01:06.170 ****** 2025-11-25 09:39:44,658 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:44,669 p=31439 u=zuul n=ansible | TASK [discover_latest_image : Export facts accordingly cifmw_discovered_image_name={{ discovered_image['data']['image_name'] }}, cifmw_discovered_image_url={{ discovered_image['data']['image_url'] }}, cifmw_discovered_hash={{ discovered_image['data']['hash'] }}, cifmw_discovered_hash_algorithm={{ discovered_image['data']['hash_algorithm'] }}, cacheable=True] *** 2025-11-25 09:39:44,670 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.553) 0:01:06.725 ****** 2025-11-25 09:39:44,670 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.553) 0:01:06.723 ****** 2025-11-25 09:39:44,697 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:39:44,715 p=31439 u=zuul n=ansible | TASK [cifmw_setup : Create artifacts with custom params mode=0644, dest={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts/parameters/custom-params.yml, content={{ ci_framework_params | to_nice_yaml }}] *** 2025-11-25 09:39:44,716 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.046) 0:01:06.771 ****** 2025-11-25 09:39:44,716 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:44 +0000 (0:00:00.046) 0:01:06.769 ****** 2025-11-25 09:39:45,160 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:39:45,200 p=31439 u=zuul n=ansible | PLAY [Install deps and prepare for KUTTL run] ********************************** 2025-11-25 09:39:45,224 p=31439 u=zuul n=ansible | TASK [Download install_yamls deps name=install_yamls_makes, tasks_from=make_download_tools] *** 2025-11-25 09:39:45,224 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.508) 0:01:07.279 ****** 2025-11-25 09:39:45,224 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.508) 0:01:07.277 ****** 2025-11-25 09:39:45,280 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_download_tools_env var=make_download_tools_env] *** 2025-11-25 09:39:45,280 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.056) 0:01:07.336 ****** 2025-11-25 09:39:45,280 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.056) 0:01:07.334 ****** 2025-11-25 09:39:45,302 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:45,313 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_download_tools_params var=make_download_tools_params] *** 2025-11-25 09:39:45,314 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.033) 0:01:07.369 ****** 2025-11-25 09:39:45,314 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.033) 0:01:07.367 ****** 2025-11-25 09:39:45,336 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:39:45,350 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Run download_tools output_dir={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/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({}))) }}] *** 2025-11-25 09:39:45,350 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.036) 0:01:07.405 ****** 2025-11-25 09:39:45,350 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:39:45 +0000 (0:00:00.036) 0:01:07.403 ****** 2025-11-25 09:39:45,390 p=31439 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_000_run_download.log 2025-11-25 09:40:33,911 p=31439 u=zuul n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ make_download_tools_until | default(true) }} 2025-11-25 09:40:33,914 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:33,927 p=31439 u=zuul n=ansible | TASK [Login into Openshift cluster name=openshift_login] *********************** 2025-11-25 09:40:33,927 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:33 +0000 (0:00:48.577) 0:01:55.983 ****** 2025-11-25 09:40:33,927 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:33 +0000 (0:00:48.577) 0:01:55.981 ****** 2025-11-25 09:40:33,989 p=31439 u=zuul n=ansible | TASK [openshift_login : Ensure output directory exists path={{ cifmw_openshift_login_basedir }}/artifacts, state=directory, mode=0755] *** 2025-11-25 09:40:33,989 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:33 +0000 (0:00:00.061) 0:01:56.045 ****** 2025-11-25 09:40:33,989 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:33 +0000 (0:00:00.061) 0:01:56.043 ****** 2025-11-25 09:40:34,173 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:34,184 p=31439 u=zuul n=ansible | TASK [openshift_login : OpenShift login _raw_params=login.yml] ***************** 2025-11-25 09:40:34,184 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.194) 0:01:56.239 ****** 2025-11-25 09:40:34,184 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.194) 0:01:56.238 ****** 2025-11-25 09:40:34,212 p=31439 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/openshift_login/tasks/login.yml for localhost 2025-11-25 09:40:34,222 p=31439 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) }}] *** 2025-11-25 09:40:34,222 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.037) 0:01:56.277 ****** 2025-11-25 09:40:34,222 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.037) 0:01:56.276 ****** 2025-11-25 09:40:34,245 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,254 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch user password content src={{ cifmw_openshift_login_password_file | default(cifmw_openshift_password_file) }}] *** 2025-11-25 09:40:34,254 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.032) 0:01:56.309 ****** 2025-11-25 09:40:34,254 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.032) 0:01:56.308 ****** 2025-11-25 09:40:34,275 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,282 p=31439 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] *** 2025-11-25 09:40:34,283 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.028) 0:01:56.338 ****** 2025-11-25 09:40:34,283 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.028) 0:01:56.336 ****** 2025-11-25 09:40:34,304 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,312 p=31439 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] *** 2025-11-25 09:40:34,313 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.029) 0:01:56.368 ****** 2025-11-25 09:40:34,313 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.029) 0:01:56.366 ****** 2025-11-25 09:40:34,345 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:34,353 p=31439 u=zuul n=ansible | TASK [openshift_login : Check if kubeconfig exists path={{ cifmw_openshift_login_kubeconfig }}] *** 2025-11-25 09:40:34,353 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.040) 0:01:56.409 ****** 2025-11-25 09:40:34,353 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.040) 0:01:56.407 ****** 2025-11-25 09:40:34,574 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:34,584 p=31439 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] *** 2025-11-25 09:40:34,584 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.230) 0:01:56.640 ****** 2025-11-25 09:40:34,585 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.231) 0:01:56.638 ****** 2025-11-25 09:40:34,622 p=31439 u=zuul n=ansible | ok: [localhost] => changed: false msg: All assertions passed 2025-11-25 09:40:34,631 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch kubeconfig content src={{ cifmw_openshift_login_kubeconfig }}] *** 2025-11-25 09:40:34,631 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.046) 0:01:56.686 ****** 2025-11-25 09:40:34,631 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.046) 0:01:56.684 ****** 2025-11-25 09:40:34,656 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,664 p=31439 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] *** 2025-11-25 09:40:34,665 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.033) 0:01:56.720 ****** 2025-11-25 09:40:34,665 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.033) 0:01:56.718 ****** 2025-11-25 09:40:34,685 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,694 p=31439 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] *** 2025-11-25 09:40:34,694 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.029) 0:01:56.749 ****** 2025-11-25 09:40:34,694 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.029) 0:01:56.748 ****** 2025-11-25 09:40:34,711 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:34,720 p=31439 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 }}] *** 2025-11-25 09:40:34,720 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.026) 0:01:56.775 ****** 2025-11-25 09:40:34,720 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.026) 0:01:56.774 ****** 2025-11-25 09:40:34,743 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:34,750 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch token _raw_params=try_login.yml] ***************** 2025-11-25 09:40:34,750 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.030) 0:01:56.805 ****** 2025-11-25 09:40:34,750 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.030) 0:01:56.804 ****** 2025-11-25 09:40:34,774 p=31439 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/openshift_login/tasks/try_login.yml for localhost 2025-11-25 09:40:34,783 p=31439 u=zuul n=ansible | TASK [openshift_login : Try get OpenShift access token _raw_params=oc whoami -t] *** 2025-11-25 09:40:34,783 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.033) 0:01:56.839 ****** 2025-11-25 09:40:34,784 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:34 +0000 (0:00:00.033) 0:01:56.837 ****** 2025-11-25 09:40:35,081 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => changed: true cmd: - oc - whoami - -t delta: '0:00:00.110094' end: '2025-11-25 09:40:35.062234' msg: non-zero return code rc: 1 start: '2025-11-25 09:40:34.952140' stderr: |- error: Missing or incomplete configuration info. Please point to an existing, complete config file: 1. Via the command-line flag --kubeconfig 2. Via the KUBECONFIG environment variable 3. In your home directory as ~/.kube/config To view or setup config directly use the 'config' command. stderr_lines: - 'error: Missing or incomplete configuration info. Please point to an existing, complete config file:' - '' - '' - ' 1. Via the command-line flag --kubeconfig' - ' 2. Via the KUBECONFIG environment variable' - ' 3. In your home directory as ~/.kube/config' - '' - To view or setup config directly use the 'config' command. stdout: '' stdout_lines: [] 2025-11-25 09:40:35,081 p=31439 u=zuul n=ansible | ...ignoring 2025-11-25 09:40:35,088 p=31439 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 %}] *** 2025-11-25 09:40:35,088 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.304) 0:01:57.144 ****** 2025-11-25 09:40:35,089 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.304) 0:01:57.142 ****** 2025-11-25 09:40:35,139 p=31439 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_001_fetch_openshift.log 2025-11-25 09:40:35,539 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:35,547 p=31439 u=zuul n=ansible | TASK [openshift_login : Ensure kubeconfig is provided that=cifmw_openshift_login_kubeconfig != ""] *** 2025-11-25 09:40:35,547 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.458) 0:01:57.602 ****** 2025-11-25 09:40:35,547 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.458) 0:01:57.600 ****** 2025-11-25 09:40:35,567 p=31439 u=zuul n=ansible | ok: [localhost] => changed: false msg: All assertions passed 2025-11-25 09:40:35,578 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch new OpenShift access token _raw_params=oc whoami -t] *** 2025-11-25 09:40:35,578 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.031) 0:01:57.633 ****** 2025-11-25 09:40:35,578 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.031) 0:01:57.632 ****** 2025-11-25 09:40:35,955 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:35,963 p=31439 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] *** 2025-11-25 09:40:35,963 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.384) 0:01:58.018 ****** 2025-11-25 09:40:35,963 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.384) 0:01:58.017 ****** 2025-11-25 09:40:35,989 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:35,997 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift API URL _raw_params=oc whoami --show-server=true] *** 2025-11-25 09:40:35,997 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.034) 0:01:58.053 ****** 2025-11-25 09:40:35,998 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:35 +0000 (0:00:00.034) 0:01:58.051 ****** 2025-11-25 09:40:36,340 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:36,348 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift kubeconfig context _raw_params=oc whoami -c] *** 2025-11-25 09:40:36,348 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.350) 0:01:58.403 ****** 2025-11-25 09:40:36,348 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.350) 0:01:58.401 ****** 2025-11-25 09:40:36,654 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:36,662 p=31439 u=zuul n=ansible | TASK [openshift_login : Fetch OpenShift current user _raw_params=oc whoami] **** 2025-11-25 09:40:36,662 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.314) 0:01:58.717 ****** 2025-11-25 09:40:36,662 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.314) 0:01:58.716 ****** 2025-11-25 09:40:36,955 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:36,963 p=31439 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] *** 2025-11-25 09:40:36,964 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.301) 0:01:59.019 ****** 2025-11-25 09:40:36,964 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:36 +0000 (0:00:00.301) 0:01:59.017 ****** 2025-11-25 09:40:36,997 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:37,004 p=31439 u=zuul n=ansible | TASK [openshift_login : Create the openshift_login parameters file dest={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts/parameters/openshift-login-params.yml, content={{ cifmw_openshift_login_params_content | from_yaml | to_nice_yaml }}, mode=0600] *** 2025-11-25 09:40:37,004 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.040) 0:01:59.059 ****** 2025-11-25 09:40:37,004 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.040) 0:01:59.058 ****** 2025-11-25 09:40:37,400 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:37,407 p=31439 u=zuul n=ansible | TASK [openshift_login : Read the install yamls parameters file path={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts/parameters/install-yamls-params.yml] *** 2025-11-25 09:40:37,407 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.402) 0:01:59.462 ****** 2025-11-25 09:40:37,407 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.402) 0:01:59.460 ****** 2025-11-25 09:40:37,736 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:37,745 p=31439 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|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts/parameters/install-yamls-params.yml, mode=0600] *** 2025-11-25 09:40:37,745 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.338) 0:01:59.800 ****** 2025-11-25 09:40:37,745 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:37 +0000 (0:00:00.338) 0:01:59.799 ****** 2025-11-25 09:40:38,244 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:38,257 p=31439 u=zuul n=ansible | TASK [openshift_setup : Ensure output directory exists path={{ cifmw_openshift_setup_basedir }}/artifacts, state=directory, mode=0755] *** 2025-11-25 09:40:38,257 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.511) 0:02:00.312 ****** 2025-11-25 09:40:38,257 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.511) 0:02:00.311 ****** 2025-11-25 09:40:38,457 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:38,465 p=31439 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 }}] *** 2025-11-25 09:40:38,465 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.207) 0:02:00.520 ****** 2025-11-25 09:40:38,465 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.207) 0:02:00.519 ****** 2025-11-25 09:40:38,491 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:38,502 p=31439 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] *** 2025-11-25 09:40:38,503 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.037) 0:02:00.558 ****** 2025-11-25 09:40:38,503 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:38 +0000 (0:00:00.037) 0:02:00.556 ****** 2025-11-25 09:40:39,529 p=31439 u=zuul n=ansible | changed: [localhost] => (item=openstack) 2025-11-25 09:40:40,383 p=31439 u=zuul n=ansible | changed: [localhost] => (item=openstack-operators) 2025-11-25 09:40:40,400 p=31439 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] *** 2025-11-25 09:40:40,400 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:01.897) 0:02:02.455 ****** 2025-11-25 09:40:40,400 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:01.897) 0:02:02.454 ****** 2025-11-25 09:40:40,416 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,426 p=31439 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'}}] *** 2025-11-25 09:40:40,426 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.025) 0:02:02.481 ****** 2025-11-25 09:40:40,426 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.025) 0:02:02.480 ****** 2025-11-25 09:40:40,453 p=31439 u=zuul n=ansible | skipping: [localhost] => (item=openstack) 2025-11-25 09:40:40,454 p=31439 u=zuul n=ansible | skipping: [localhost] => (item=openstack-operators) 2025-11-25 09:40:40,455 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,465 p=31439 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'}] *** 2025-11-25 09:40:40,465 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.039) 0:02:02.520 ****** 2025-11-25 09:40:40,465 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.039) 0:02:02.519 ****** 2025-11-25 09:40:40,491 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,498 p=31439 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 }}] *** 2025-11-25 09:40:40,498 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.033) 0:02:02.553 ****** 2025-11-25 09:40:40,498 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.033) 0:02:02.552 ****** 2025-11-25 09:40:40,523 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,531 p=31439 u=zuul n=ansible | TASK [Ensure we have custom CA installed on host role=install_ca] ************** 2025-11-25 09:40:40,532 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.033) 0:02:02.587 ****** 2025-11-25 09:40:40,532 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.033) 0:02:02.585 ****** 2025-11-25 09:40:40,552 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,563 p=31439 u=zuul n=ansible | TASK [openshift_setup : Update ca bundle _raw_params=update-ca-trust extract] *** 2025-11-25 09:40:40,563 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.618 ****** 2025-11-25 09:40:40,563 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.617 ****** 2025-11-25 09:40:40,584 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,594 p=31439 u=zuul n=ansible | TASK [openshift_setup : Slurp CAs file src={{ cifmw_openshift_setup_ca_bundle_path }}] *** 2025-11-25 09:40:40,594 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.650 ****** 2025-11-25 09:40:40,595 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.648 ****** 2025-11-25 09:40:40,615 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,623 p=31439 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 }}'}] *** 2025-11-25 09:40:40,623 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.678 ****** 2025-11-25 09:40:40,623 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.677 ****** 2025-11-25 09:40:40,644 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,652 p=31439 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'}}}] *** 2025-11-25 09:40:40,652 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.707 ****** 2025-11-25 09:40:40,652 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.705 ****** 2025-11-25 09:40:40,674 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,682 p=31439 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 }}'}}}] *** 2025-11-25 09:40:40,682 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.030) 0:02:02.737 ****** 2025-11-25 09:40:40,682 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.030) 0:02:02.736 ****** 2025-11-25 09:40:40,702 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,710 p=31439 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 }}'}}] *** 2025-11-25 09:40:40,710 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.766 ****** 2025-11-25 09:40:40,710 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.028) 0:02:02.764 ****** 2025-11-25 09:40:40,733 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:40,742 p=31439 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] *** 2025-11-25 09:40:40,742 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.797 ****** 2025-11-25 09:40:40,742 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:40 +0000 (0:00:00.031) 0:02:02.795 ****** 2025-11-25 09:40:41,796 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:41,809 p=31439 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'}]] *** 2025-11-25 09:40:41,809 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:41 +0000 (0:00:01.066) 0:02:03.864 ****** 2025-11-25 09:40:41,809 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:41 +0000 (0:00:01.066) 0:02:03.862 ****** 2025-11-25 09:40:42,899 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:42,909 p=31439 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': 'registry.redhat.io'}]] *** 2025-11-25 09:40:42,910 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:42 +0000 (0:00:01.100) 0:02:04.965 ****** 2025-11-25 09:40:42,910 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:42 +0000 (0:00:01.100) 0:02:04.963 ****** 2025-11-25 09:40:43,783 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:43,791 p=31439 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] *** 2025-11-25 09:40:43,791 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.881) 0:02:05.846 ****** 2025-11-25 09:40:43,791 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.881) 0:02:05.844 ****** 2025-11-25 09:40:43,806 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:43,814 p=31439 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] *** 2025-11-25 09:40:43,815 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.023) 0:02:05.870 ****** 2025-11-25 09:40:43,815 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.023) 0:02:05.868 ****** 2025-11-25 09:40:43,829 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:43,843 p=31439 u=zuul n=ansible | TASK [Attach default network to CRC name=install_yamls_makes, tasks_from=make_crc_attach_default_interface] *** 2025-11-25 09:40:43,843 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.028) 0:02:05.898 ****** 2025-11-25 09:40:43,843 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.028) 0:02:05.897 ****** 2025-11-25 09:40:43,908 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_crc_attach_default_interface_env var=make_crc_attach_default_interface_env] *** 2025-11-25 09:40:43,908 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.065) 0:02:05.964 ****** 2025-11-25 09:40:43,908 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.065) 0:02:05.962 ****** 2025-11-25 09:40:43,931 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:43,940 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_crc_attach_default_interface_params var=make_crc_attach_default_interface_params] *** 2025-11-25 09:40:43,940 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.031) 0:02:05.995 ****** 2025-11-25 09:40:43,940 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.031) 0:02:05.994 ****** 2025-11-25 09:40:43,960 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:43,967 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Run crc_attach_default_interface output_dir={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts, chdir=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/devsetup, script=make crc_attach_default_interface, dry_run={{ make_crc_attach_default_interface_dryrun|default(false)|bool }}, extra_args={{ dict((make_crc_attach_default_interface_env|default({})), **(make_crc_attach_default_interface_params|default({}))) }}] *** 2025-11-25 09:40:43,967 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.027) 0:02:06.022 ****** 2025-11-25 09:40:43,967 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:43 +0000 (0:00:00.027) 0:02:06.021 ****** 2025-11-25 09:40:44,002 p=31439 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_002_run_crc_attach_default.log 2025-11-25 09:40:49,152 p=31439 u=zuul n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ make_crc_attach_default_interface_until | default(true) }} 2025-11-25 09:40:49,154 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:40:49,171 p=31439 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']] *** 2025-11-25 09:40:49,171 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:05.204) 0:02:11.227 ****** 2025-11-25 09:40:49,172 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:05.204) 0:02:11.225 ****** 2025-11-25 09:40:49,233 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:49,241 p=31439 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.] *** 2025-11-25 09:40:49,242 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.070) 0:02:11.297 ****** 2025-11-25 09:40:49,242 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.070) 0:02:11.295 ****** 2025-11-25 09:40:49,323 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:49,337 p=31439 u=zuul n=ansible | TASK [run_hook : Loop on hooks for pre_kuttl _raw_params={{ hook.type }}.yml] *** 2025-11-25 09:40:49,338 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.095) 0:02:11.393 ****** 2025-11-25 09:40:49,338 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.096) 0:02:11.391 ****** 2025-11-25 09:40:49,425 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:49,440 p=31439 u=zuul n=ansible | TASK [Run kuttl tests _raw_params=run-kuttl-tests.yml] ************************* 2025-11-25 09:40:49,441 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.103) 0:02:11.496 ****** 2025-11-25 09:40:49,441 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.103) 0:02:11.494 ****** 2025-11-25 09:40:49,478 p=31439 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/ci/playbooks/kuttl/run-kuttl-tests.yml for localhost => (item=keystone) 2025-11-25 09:40:49,507 p=31439 u=zuul n=ansible | TASK [Load parameters dir={{ cifmw_basedir }}/artifacts/parameters] ************ 2025-11-25 09:40:49,507 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.066) 0:02:11.562 ****** 2025-11-25 09:40:49,507 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.066) 0:02:11.561 ****** 2025-11-25 09:40:49,556 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:49,569 p=31439 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}) }}] *** 2025-11-25 09:40:49,569 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.062) 0:02:11.624 ****** 2025-11-25 09:40:49,569 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.062) 0:02:11.623 ****** 2025-11-25 09:40:49,608 p=31439 u=zuul n=ansible | ok: [localhost] => (item={'key': 'keystone-operator', 'value': {'git_commit_hash': 'aab5cfe1d4a691d84a96189c698c58d261af9e66', 'git_src_dir': '/home/zuul/src/github.com/openstack-k8s-operators/keystone-operator', 'image': '38.129.56.103:5001/openstack-k8s-operators/keystone-operator:aab5cfe1d4a691d84a96189c698c58d261af9e66', 'image_bundle': '38.129.56.103:5001/openstack-k8s-operators/keystone-operator-bundle:aab5cfe1d4a691d84a96189c698c58d261af9e66', 'image_catalog': '38.129.56.103:5001/openstack-k8s-operators/keystone-operator-index:aab5cfe1d4a691d84a96189c698c58d261af9e66'}}) 2025-11-25 09:40:49,616 p=31439 u=zuul n=ansible | ok: [localhost] => (item={'key': 'openstack-operator', 'value': {'git_commit_hash': '17b1faec894dfcad58164b52f38cf6acda76f9dc', 'git_src_dir': '~/src/github.com/openstack-k8s-operators/openstack-operator', 'image': '38.129.56.103:5001/openstack-k8s-operators/openstack-operator:17b1faec894dfcad58164b52f38cf6acda76f9dc', 'image_bundle': '38.129.56.103:5001/openstack-k8s-operators/openstack-operator-bundle:17b1faec894dfcad58164b52f38cf6acda76f9dc', 'image_catalog': '38.129.56.103:5001/openstack-k8s-operators/openstack-operator-index:17b1faec894dfcad58164b52f38cf6acda76f9dc'}}) 2025-11-25 09:40:49,628 p=31439 u=zuul n=ansible | TASK [Set environment vars for kuttl test cifmw_kuttl_tests_env={{ _local_operators_indexes | default({}) | combine(cifmw_install_yamls_environment) | combine(cifmw_kuttl_tests_env_vars | default({})) | combine(cifmw_kuttl_openstack_prep_vars | default({})) | combine({'PATH': cifmw_path}) }}] *** 2025-11-25 09:40:49,629 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.059) 0:02:11.684 ****** 2025-11-25 09:40:49,629 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.059) 0:02:11.682 ****** 2025-11-25 09:40:49,657 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:49,667 p=31439 u=zuul n=ansible | TASK [Clean storage beforehand name=ci_local_storage, tasks_from=cleanup.yml] *** 2025-11-25 09:40:49,667 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.038) 0:02:11.722 ****** 2025-11-25 09:40:49,667 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.038) 0:02:11.721 ****** 2025-11-25 09:40:49,717 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Get all pvs kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=PersistentVolume, label_selectors=['provisioned-by={{ cifmw_cls_storage_provisioner }}']] *** 2025-11-25 09:40:49,717 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.049) 0:02:11.772 ****** 2025-11-25 09:40:49,717 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:49 +0000 (0:00:00.049) 0:02:11.771 ****** 2025-11-25 09:40:50,536 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:50,547 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Export PVs as facts cifmw_cls_pvs={{ _pv_info.resources | selectattr("metadata.name", "defined") | map(attribute="metadata.name") }}] *** 2025-11-25 09:40:50,548 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.830) 0:02:12.603 ****** 2025-11-25 09:40:50,548 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.830) 0:02:12.601 ****** 2025-11-25 09:40:50,572 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:50,583 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Delete all pvs kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=PersistentVolume, state=absent, api_version=v1, namespace={{ cifmw_cls_namespace }}, name={{ item }}] *** 2025-11-25 09:40:50,583 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.035) 0:02:12.638 ****** 2025-11-25 09:40:50,583 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.035) 0:02:12.637 ****** 2025-11-25 09:40:50,595 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:40:50,604 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Get k8s nodes kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=Node] *** 2025-11-25 09:40:50,604 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.020) 0:02:12.659 ****** 2025-11-25 09:40:50,604 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:50 +0000 (0:00:00.020) 0:02:12.657 ****** 2025-11-25 09:40:51,391 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:51,405 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Fetch hostnames for all hosts _raw_params=hostname] *** 2025-11-25 09:40:51,406 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:51 +0000 (0:00:00.801) 0:02:13.461 ****** 2025-11-25 09:40:51,406 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:51 +0000 (0:00:00.801) 0:02:13.459 ****** 2025-11-25 09:40:53,746 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=crc) 2025-11-25 09:40:54,255 p=31439 u=zuul n=ansible | changed: [localhost -> controller(38.129.56.20)] => (item=controller) 2025-11-25 09:40:54,436 p=31439 u=zuul n=ansible | changed: [localhost] => (item=localhost) 2025-11-25 09:40:54,439 p=31439 u=zuul n=ansible | [WARNING]: Platform linux on host localhost is using the discovered Python interpreter at /usr/bin/python3.9, but future installation of another Python interpreter could change the meaning of that path. See https://docs.ansible.com/ansible- core/2.15/reference_appendices/interpreter_discovery.html for more information. 2025-11-25 09:40:54,448 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Set the hosts k8s ansible hosts cifmw_ci_local_storage_k8s_hosts={{ _host_map | selectattr("key", "in", k8s_nodes_hostnames) | map(attribute="value") | list }}, cifmw_ci_local_storage_k8s_hostnames={{ k8s_nodes_hostnames }}] *** 2025-11-25 09:40:54,449 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:03.043) 0:02:16.504 ****** 2025-11-25 09:40:54,449 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:03.043) 0:02:16.502 ****** 2025-11-25 09:40:54,486 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:40:54,496 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Delete directories on worker node _raw_params=worker_node_dirs.yml] *** 2025-11-25 09:40:54,496 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:00.046) 0:02:16.551 ****** 2025-11-25 09:40:54,496 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:00.046) 0:02:16.549 ****** 2025-11-25 09:40:54,524 p=31439 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_local_storage/tasks/worker_node_dirs.yml for localhost => (item=crc) 2025-11-25 09:40:54,538 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Perform action in the PV directory path={{ [ cifmw_cls_local_storage_name, 'pv'+ ("%02d" | format(item | int)) ] | path_join }}, state={{ 'directory' if cifmw_cls_action == 'create' else 'absent' }}, mode=0775] *** 2025-11-25 09:40:54,538 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:00.042) 0:02:16.593 ****** 2025-11-25 09:40:54,538 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:54 +0000 (0:00:00.042) 0:02:16.591 ****** 2025-11-25 09:40:54,993 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=1) 2025-11-25 09:40:55,417 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=2) 2025-11-25 09:40:55,806 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=3) 2025-11-25 09:40:56,201 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=4) 2025-11-25 09:40:56,629 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=5) 2025-11-25 09:40:57,071 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=6) 2025-11-25 09:40:57,527 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=7) 2025-11-25 09:40:57,951 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=8) 2025-11-25 09:40:58,373 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=9) 2025-11-25 09:40:59,045 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=10) 2025-11-25 09:40:59,487 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=11) 2025-11-25 09:40:59,958 p=31439 u=zuul n=ansible | ok: [localhost -> crc(38.102.83.5)] => (item=12) 2025-11-25 09:40:59,969 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Remove the cifmw_cls_namespace namespace state=absent, kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=Namespace, name={{ cifmw_cls_namespace }}, wait=True, wait_timeout=300] *** 2025-11-25 09:40:59,969 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:59 +0000 (0:00:05.431) 0:02:22.024 ****** 2025-11-25 09:40:59,969 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:40:59 +0000 (0:00:05.431) 0:02:22.023 ****** 2025-11-25 09:41:11,151 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:11,167 p=31439 u=zuul n=ansible | TASK [Create storage name=ci_local_storage] ************************************ 2025-11-25 09:41:11,167 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:11.197) 0:02:33.222 ****** 2025-11-25 09:41:11,167 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:11.197) 0:02:33.220 ****** 2025-11-25 09:41:11,219 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Create role needed directories path={{ cifmw_cls_manifests_dir }}, state=directory, mode=0755] *** 2025-11-25 09:41:11,219 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:00.051) 0:02:33.274 ****** 2025-11-25 09:41:11,219 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:00.051) 0:02:33.272 ****** 2025-11-25 09:41:11,431 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:11,438 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Create the cifmw_cls_namespace namespace" kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit) }}, name={{ cifmw_cls_namespace }}, kind=Namespace, state=present] *** 2025-11-25 09:41:11,438 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:00.219) 0:02:33.493 ****** 2025-11-25 09:41:11,438 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:11 +0000 (0:00:00.219) 0:02:33.492 ****** 2025-11-25 09:41:12,194 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:12,201 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Save storage manifests as artifacts dest={{ cifmw_cls_manifests_dir }}/storage-class.yaml, content={{ cifmw_cls_storage_manifest | to_nice_yaml }}, mode=0644] *** 2025-11-25 09:41:12,201 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:12 +0000 (0:00:00.763) 0:02:34.257 ****** 2025-11-25 09:41:12,201 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:12 +0000 (0:00:00.763) 0:02:34.255 ****** 2025-11-25 09:41:13,138 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:13,149 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Get k8s nodes kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit)}}, context={{ cifmw_openshift_context | default(omit)}}, kind=Node] *** 2025-11-25 09:41:13,149 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:13 +0000 (0:00:00.947) 0:02:35.204 ****** 2025-11-25 09:41:13,149 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:13 +0000 (0:00:00.947) 0:02:35.202 ****** 2025-11-25 09:41:14,316 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:41:14,327 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Fetch hostnames for all hosts _raw_params=hostname] *** 2025-11-25 09:41:14,327 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:14 +0000 (0:00:01.178) 0:02:36.382 ****** 2025-11-25 09:41:14,327 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:14 +0000 (0:00:01.178) 0:02:36.381 ****** 2025-11-25 09:41:15,202 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=crc) 2025-11-25 09:41:16,074 p=31439 u=zuul n=ansible | changed: [localhost -> controller(38.129.56.20)] => (item=controller) 2025-11-25 09:41:16,281 p=31439 u=zuul n=ansible | changed: [localhost] => (item=localhost) 2025-11-25 09:41:16,290 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Set the hosts k8s ansible hosts cifmw_ci_local_storage_k8s_hosts={{ _host_map | selectattr("key", "in", k8s_nodes_hostnames) | map(attribute="value") | list }}, cifmw_ci_local_storage_k8s_hostnames={{ k8s_nodes_hostnames }}] *** 2025-11-25 09:41:16,290 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:16 +0000 (0:00:01.962) 0:02:38.345 ****** 2025-11-25 09:41:16,290 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:16 +0000 (0:00:01.962) 0:02:38.343 ****** 2025-11-25 09:41:16,321 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:41:16,332 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Apply the storage class manifests kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit) }}, context={{ cifmw_openshift_context | default(omit) }}, state=present, src={{ cifmw_cls_manifests_dir }}/storage-class.yaml] *** 2025-11-25 09:41:16,332 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:16 +0000 (0:00:00.042) 0:02:38.387 ****** 2025-11-25 09:41:16,332 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:16 +0000 (0:00:00.042) 0:02:38.386 ****** 2025-11-25 09:41:17,095 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:17,106 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Create directories on worker node _raw_params=worker_node_dirs.yml] *** 2025-11-25 09:41:17,106 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:17 +0000 (0:00:00.773) 0:02:39.161 ****** 2025-11-25 09:41:17,106 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:17 +0000 (0:00:00.773) 0:02:39.159 ****** 2025-11-25 09:41:17,130 p=31439 u=zuul n=ansible | included: /home/zuul/src/github.com/openstack-k8s-operators/ci-framework/roles/ci_local_storage/tasks/worker_node_dirs.yml for localhost => (item=crc) 2025-11-25 09:41:17,141 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Perform action in the PV directory path={{ [ cifmw_cls_local_storage_name, 'pv'+ ("%02d" | format(item | int)) ] | path_join }}, state={{ 'directory' if cifmw_cls_action == 'create' else 'absent' }}, mode=0775] *** 2025-11-25 09:41:17,141 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:17 +0000 (0:00:00.035) 0:02:39.196 ****** 2025-11-25 09:41:17,141 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:17 +0000 (0:00:00.035) 0:02:39.195 ****** 2025-11-25 09:41:17,570 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=1) 2025-11-25 09:41:18,006 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=2) 2025-11-25 09:41:18,428 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=3) 2025-11-25 09:41:18,842 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=4) 2025-11-25 09:41:19,304 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=5) 2025-11-25 09:41:19,751 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=6) 2025-11-25 09:41:20,150 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=7) 2025-11-25 09:41:20,569 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=8) 2025-11-25 09:41:20,983 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=9) 2025-11-25 09:41:21,438 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=10) 2025-11-25 09:41:21,853 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=11) 2025-11-25 09:41:22,262 p=31439 u=zuul n=ansible | changed: [localhost -> crc(38.102.83.5)] => (item=12) 2025-11-25 09:41:22,281 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Generate pv related storage manifest file src=storage.yaml.j2, dest={{ cifmw_cls_manifests_dir }}/storage.yaml, mode=0644] *** 2025-11-25 09:41:22,281 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:22 +0000 (0:00:05.140) 0:02:44.337 ****** 2025-11-25 09:41:22,282 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:22 +0000 (0:00:05.140) 0:02:44.335 ****** 2025-11-25 09:41:22,764 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:22,772 p=31439 u=zuul n=ansible | TASK [ci_local_storage : Apply pv related storage manifest file kubeconfig={{ cifmw_openshift_kubeconfig }}, api_key={{ cifmw_openshift_token | default(omit) }}, context={{ cifmw_openshift_context | default(omit) }}, state=present, src={{ cifmw_cls_manifests_dir }}/storage.yaml] *** 2025-11-25 09:41:22,773 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:22 +0000 (0:00:00.491) 0:02:44.828 ****** 2025-11-25 09:41:22,773 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:22 +0000 (0:00:00.491) 0:02:44.826 ****** 2025-11-25 09:41:23,658 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 09:41:23,675 p=31439 u=zuul n=ansible | TASK [Get resource status before keystone_kuttl run _raw_params={{ item }} >> {{ cifmw_artifacts_basedir }}/logs/cmd_before_{{ operator }}_kuttl.log ] *** 2025-11-25 09:41:23,676 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.902) 0:02:45.731 ****** 2025-11-25 09:41:23,676 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.902) 0:02:45.729 ****** 2025-11-25 09:41:23,692 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => msg: '''commands_before_kuttl_run'' is undefined. ''commands_before_kuttl_run'' is undefined' 2025-11-25 09:41:23,693 p=31439 u=zuul n=ansible | ...ignoring 2025-11-25 09:41:23,705 p=31439 u=zuul n=ansible | TASK [Set make_keystone_kuttl_env vars make_{{ operator }}_kuttl_env={{ cifmw_kuttl_tests_env }}] *** 2025-11-25 09:41:23,705 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.029) 0:02:45.760 ****** 2025-11-25 09:41:23,705 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.029) 0:02:45.759 ****** 2025-11-25 09:41:23,728 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 09:41:23,738 p=31439 u=zuul n=ansible | TASK [Run make_keystone_kuttl name=install_yamls_makes, tasks_from=make_{{ operator }}_kuttl.yml, apply={'ignore_errors': True}] *** 2025-11-25 09:41:23,738 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.032) 0:02:45.793 ****** 2025-11-25 09:41:23,738 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.032) 0:02:45.791 ****** 2025-11-25 09:41:23,794 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_keystone_kuttl_env var=make_keystone_kuttl_env] *** 2025-11-25 09:41:23,794 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.056) 0:02:45.849 ****** 2025-11-25 09:41:23,794 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.056) 0:02:45.848 ****** 2025-11-25 09:41:23,828 p=31439 u=zuul n=ansible | ok: [localhost] => make_keystone_kuttl_env: BMO_SETUP: false CHECKOUT_FROM_OPENSTACK_REF: 'true' KEYSTONE_BRANCH: '' KEYSTONE_IMG: 38.129.56.103:5001/openstack-k8s-operators/keystone-operator-index:aab5cfe1d4a691d84a96189c698c58d261af9e66 KEYSTONE_REPO: /home/zuul/src/github.com/openstack-k8s-operators/keystone-operator KUBECONFIG: /home/zuul/.crc/machines/crc/kubeconfig OPENSTACK_IMG: 38.129.56.103:5001/openstack-k8s-operators/openstack-operator-index:17b1faec894dfcad58164b52f38cf6acda76f9dc 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 2025-11-25 09:41:23,839 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Debug make_keystone_kuttl_params var=make_keystone_kuttl_params] *** 2025-11-25 09:41:23,839 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.045) 0:02:45.894 ****** 2025-11-25 09:41:23,839 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.045) 0:02:45.893 ****** 2025-11-25 09:41:23,863 p=31439 u=zuul n=ansible | skipping: [localhost] 2025-11-25 09:41:23,871 p=31439 u=zuul n=ansible | TASK [install_yamls_makes : Run keystone_kuttl output_dir={{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts, chdir=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls, script=make keystone_kuttl, dry_run={{ make_keystone_kuttl_dryrun|default(false)|bool }}, extra_args={{ dict((make_keystone_kuttl_env|default({})), **(make_keystone_kuttl_params|default({}))) }}] *** 2025-11-25 09:41:23,871 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.032) 0:02:45.927 ****** 2025-11-25 09:41:23,871 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 09:41:23 +0000 (0:00:00.032) 0:02:45.925 ****** 2025-11-25 09:41:23,925 p=31439 u=zuul n=ansible | Follow script's output here: /home/zuul/ci-framework-data/logs/ci_script_003_run_keystone.log 2025-11-25 10:02:01,249 p=31439 u=zuul n=ansible | [WARNING]: conditional statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ make_keystone_kuttl_until | default(true) }} 2025-11-25 10:02:01,327 p=31439 u=zuul n=ansible | An exception occurred during task execution. To see the full traceback, use -vvv. The error was: NoneType: None 2025-11-25 10:02:01,568 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => attempts: 1 changed: true msg: non-zero return code rc: 2 stderr: '' stderr_lines: [] stdout: "~/src/github.com/openstack-k8s-operators/install_yamls ~/ci-framework-data/artifacts\nerror: the server doesn't have a resource type \"openstackversion\"\nbash scripts/gen-namespace.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']'\n+ '[' -z keystone-kuttl-tests ']'\n+ OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/namespace.yaml\nnamespace/keystone-kuttl-tests created\ntimeout 500s bash -c \"while ! (oc get project.v1.project.openshift.io keystone-kuttl-tests); do sleep 1; done\"\nNAME DISPLAY NAME STATUS\nkeystone-kuttl-tests \ Active\noc project keystone-kuttl-tests\nNow using project \"keystone-kuttl-tests\" on server \"https://api.crc.testing:6443\".\nbash scripts/gen-input-kustomize.sh\n+ OUT=/home/zuul/ci-framework-data/artifacts/manifests\n+ '[' -z keystone-kuttl-tests ']'\n+ '[' -z osp-secret ']'\n+ '[' -z 12345678 ']'\n+ '[' -z 1234567842 ']'\n+ '[' -z 767c3ed056cbaa3b9dfedb8c6f825bf0 ']'\n+ '[' -z sEFmdFjDUqRM2VemYslV5yGNWjokioJXsg8Nrlc3drU= ']'\n+ '[' -z COX8bmlKAWn56XCGMrKQJj7dgHNAOl6f ']'\n+ '[' -z openstack ']'\n+ '[' -z libvirt-secret ']'\n+ DIR=/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input\n+ pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input\n~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input ~/src/github.com/openstack-k8s-operators/install_yamls\n+ cat\noc get secret/osp-secret || oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input | oc apply -f -\nError from server (NotFound): secrets \"osp-secret\" not found\nsecret/libvirt-secret created\nsecret/octavia-ca-passphrase created\nsecret/osp-secret created\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists manila;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/nova-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr\noc rsh openstack-galera-0 mysql -u root --password=12345678 -ss -e \"show databases like 'nova_%';\" | xargs -I '{}' oc rsh openstack-galera-0 mysql -u root --password=12345678 -ss -e \"flush tables; drop database if exists {};\"\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator-redis /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists octavia;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists designate;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists neutron;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists ironic;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists ironic_inspector;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists cinder;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists glance;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists placement;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift: no such file or directory\nNo resources found\nrm -Rf -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists barbican;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists keystone;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ceilometer-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr\noc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e \"flush tables; drop database if exists aodh;\" || true\nError from server (NotFound): pods \"openstack-galera-0\" not found\noc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr | oc delete --ignore-not-found=true -f -\nerror: must build at directory: not a valid directory: evalsymlink failure on '/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra: no such file or directory\nNo resources found\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr\nif oc get RabbitmqCluster; then oc delete --ignore-not-found=true RabbitmqCluster --all; fi\nerror: the server doesn't have a resource type \"RabbitmqCluster\"\nrm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr\nbash scripts/gen-namespace.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']'\n+ '[' -z openstack-operators ']'\n+ OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/openstack-operators\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/namespace.yaml\nWarning: resource namespaces/openstack-operators is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically.\nnamespace/openstack-operators configured\ntimeout 500s bash -c \"while ! (oc get project.v1.project.openshift.io openstack-operators); do sleep 1; done\"\nNAME DISPLAY NAME STATUS\nopenstack-operators \ Active\noc project openstack-operators\nNow using project \"openstack-operators\" on server \"https://api.crc.testing:6443\".\nbash scripts/gen-olm.sh\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' -z quay.io/openstack-k8s-operators/mariadb-operator-index:latest ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op\n+ OPERATOR_CHANNEL=alpha\n+ OPERATOR_SOURCE=mariadb-operator-index\n+ OPERATOR_SOURCE_NAMESPACE=openstack-operators\n+ echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op\nOPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op\n+ echo OPERATOR_CHANNEL alpha\nOPERATOR_CHANNEL alpha\n+ echo OPERATOR_SOURCE mariadb-operator-index\nOPERATOR_SOURCE mariadb-operator-index\n+ echo OPERATOR_SOURCE_NAMESPACE openstack-operators\nOPERATOR_SOURCE_NAMESPACE openstack-operators\n+ cat\n+ cat\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op\ncatalogsource.operators.coreos.com/mariadb-operator-index created\noperatorgroup.operators.coreos.com/openstack created\nsubscription.operators.coreos.com/mariadb-operator created\nmkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr\nbash scripts/clone-operator-repo.sh\nCloning repo: git clone -b main https://github.com/openstack-k8s-operators/openstack-operator.git openstack-operator\nCloning into 'openstack-operator'...\nCloning repo: git clone \ -b main https://github.com/openstack-k8s-operators/mariadb-operator.git mariadb-operator\nCloning into 'mariadb-operator'...\nRunning checkout: git checkout 231c653930d1\nNote: switching to '231c653930d1'.\n\nYou are in 'detached HEAD' state. You can look around, make experimental\nchanges and commit them, and you can discard any commits you make in this\nstate without impacting any branches by switching back to a branch.\n\nIf you want to create a new branch to retain commits you create, you may\ndo so (now or later) by using -c with the switch command. Example:\n\n git switch -c \n\nOr undo this operation with:\n\n git switch -\n\nTurn off this advice by setting config variable advice.detachedHead to false\n\nHEAD is now at 231c653 Merge pull request #379 from dciabrin/pwd-wsrep-notify\ncp /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/config/samples/mariadb_v1beta1_galera.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr\nbash scripts/gen-service-kustomize.sh\n+++ dirname scripts/gen-service-kustomize.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only\n++ set -e\n+ '[' -z keystone-kuttl-tests ']'\n+ '[' -z Galera ']'\n+ '[' -z osp-secret ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']'\n+ '[' -n '' ']'\n+ REPLACEMENTS=\n+ IMAGE=unused\n+ IMAGE_PATH=containerImage\n+ STORAGE_REQUEST=10G\n+ INTERFACE_MTU=1500\n+ VLAN_START=20\n+ VLAN_STEP=1\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']'\n+ pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr\n~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ~/src/github.com/openstack-k8s-operators/install_yamls\n+ cat\n+ [[ Galera == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ IFS=,\n+ read -ra IMAGES\n+ IFS=,\n+ read -ra IMAGE_PATHS\n+ '[' 1 '!=' 1 ']'\n+ (( i=0 ))\n+ (( i < 1 ))\n+ SPEC_PATH=containerImage\n+ SPEC_VALUE=unused\n+ '[' unused '!=' unused ']'\n+ (( i++ ))\n+ (( i < 1 ))\n+ '[' -n '' ']'\n+ '[' Galera == OpenStackControlPlane ']'\n+ '[' Galera == Galera ']'\n+ cat\n+ '[' Galera == NetConfig ']'\n+ '[' -n '' ']'\n+ [[ Galera == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ [[ Galera == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ '[' -n '' ']'\n+ kustomization_add_resources\n+ echo merge config dir\nmerge config dir\n++ find . -type f -name '*.yaml'\n++ grep -v kustomization\n+ yamls=./mariadb_v1beta1_galera.yaml\n+ for y in ${yamls[@]}\n+ kustomize edit add resource ./mariadb_v1beta1_galera.yaml\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\nmake wait\nmake[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nerror: the server doesn't have a resource type \"openstackversion\"\nbash scripts/operator-wait.sh\n+ TIMEOUT=500s\n+++ dirname scripts/operator-wait.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq ']'\n+ pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls\n+ timeout 500s bash -c 'until [ \"$(bash ./get-operator-status.sh)\" == \"Succeeded\" ]; do sleep 5; done'\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"mariadb-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"mariadb-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"mariadb-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"mariadb-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"mariadb-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z mariadb ']'\n+ '[' mariadb = rabbitmq-cluster ']'\n+ DEPL_NAME=mariadb-operator-controller-manager\n++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=1\n+ '[' 1 '!=' 1 ']'\n+ echo Succeeded\n+ exit 0\n+ rc=0\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\n+ exit 0\nmake[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nbash scripts/operator-deploy-resources.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']'\n+ NEXT_WAIT_TIME=0\n+ '[' 0 -eq 15 ']'\n+ oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr\n+ oc apply -f -\ngalera.mariadb.openstack.org/openstack created\n+ '[' 0 -lt 15 ']'\nbash scripts/gen-namespace.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']'\n+ '[' -z metallb-system ']'\n+ OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/metallb-system\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/namespace.yaml\nnamespace/metallb-system created\ntimeout 500s bash -c \"while ! (oc get project.v1.project.openshift.io metallb-system); do sleep 1; done\"\nNAME DISPLAY NAME STATUS\nmetallb-system \ Active\nbash scripts/gen-olm-metallb.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr\n+ echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op\nOPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op\n+ echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr\nDEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr\n+ echo INTERFACE\nINTERFACE\n+ cat\n+ cat\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op\noperatorgroup.operators.coreos.com/metallb-operator created\nsubscription.operators.coreos.com/metallb-operator-sub created\ntimeout 500s bash -c \"while ! (oc get pod --no-headers=true -l control-plane=controller-manager -n metallb-system| grep metallb-operator-controller); do sleep 10; done\"\nNo resources found in metallb-system namespace.\nNo resources found in metallb-system namespace.\nmetallb-operator-controller-manager-664f78b8b-n7g4f \ 0/1 ContainerCreating 0 3s\noc wait pod -n metallb-system --for condition=Ready -l control-plane=controller-manager --timeout=500s\npod/metallb-operator-controller-manager-664f78b8b-n7g4f condition met\ntimeout 500s bash -c \"while ! (oc get pod --no-headers=true -l component=webhook-server -n metallb-system| grep metallb-operator-webhook); do sleep 10; done\"\nmetallb-operator-webhook-server-75bd4c87d6-fr76c \ 1/1 Running 0 41s\noc wait pod -n metallb-system --for condition=Ready -l component=webhook-server --timeout=500s\npod/metallb-operator-webhook-server-75bd4c87d6-fr76c condition met\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/deploy_operator.yaml\nmetallb.metallb.io/metallb created\ntimeout 500s bash -c \"while ! (oc get pod --no-headers=true -l component=speaker -n metallb-system | grep speaker); do sleep 10; done\"\nNo resources found in metallb-system namespace.\nspeaker-j6bv7 1/2 Running 0 10s\noc wait pod -n metallb-system -l component=speaker --for condition=Ready --timeout=500s\npod/speaker-j6bv7 condition met\nbash scripts/gen-olm.sh\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' -z quay.io/openstack-k8s-operators/infra-operator-index:latest ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op\n+ OPERATOR_CHANNEL=alpha\n+ OPERATOR_SOURCE=infra-operator-index\n+ OPERATOR_SOURCE_NAMESPACE=openstack-operators\n+ echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op\nOPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op\n+ echo OPERATOR_CHANNEL alpha\nOPERATOR_CHANNEL alpha\n+ echo OPERATOR_SOURCE infra-operator-index\nOPERATOR_SOURCE infra-operator-index\n+ echo OPERATOR_SOURCE_NAMESPACE openstack-operators\nOPERATOR_SOURCE_NAMESPACE openstack-operators\n+ cat\n+ cat\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op\ncatalogsource.operators.coreos.com/infra-operator-index created\noperatorgroup.operators.coreos.com/openstack unchanged\nsubscription.operators.coreos.com/infra-operator created\nmkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr\nbash scripts/clone-operator-repo.sh\nCloning repo: git clone -b main https://github.com/openstack-k8s-operators/infra-operator.git infra-operator\nCloning into 'infra-operator'...\nRunning checkout: git checkout 038f0cf579da\nNote: switching to '038f0cf579da'.\n\nYou are in 'detached HEAD' state. You can look around, make experimental\nchanges and commit them, and you can discard any commits you make in this\nstate without impacting any branches by switching back to a branch.\n\nIf you want to create a new branch to retain commits you create, you may\ndo so (now or later) by using -c with the switch command. Example:\n\n \ git switch -c \n\nOr undo this operation with:\n\n git switch -\n\nTurn off this advice by setting config variable advice.detachedHead to false\n\nHEAD is now at 038f0cf Merge pull request #498 from stuggi/pin_baseimage\ncp /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/memcached_v1beta1_memcached.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr\nbash scripts/gen-service-kustomize.sh\n+++ dirname scripts/gen-service-kustomize.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only\n++ set -e\n+ '[' -z keystone-kuttl-tests ']'\n+ '[' -z Memcached ']'\n+ '[' -z osp-secret ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']'\n+ '[' -n '' ']'\n+ REPLACEMENTS=\n+ IMAGE=unused\n+ IMAGE_PATH=containerImage\n+ STORAGE_REQUEST=10G\n+ INTERFACE_MTU=1500\n+ VLAN_START=20\n+ VLAN_STEP=1\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']'\n+ pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr\n~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ~/src/github.com/openstack-k8s-operators/install_yamls\n+ cat\n+ [[ Memcached == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ IFS=,\n+ read -ra IMAGES\n+ IFS=,\n+ read -ra IMAGE_PATHS\n+ '[' 1 '!=' 1 ']'\n+ (( i=0 ))\n+ (( i < 1 ))\n+ SPEC_PATH=containerImage\n+ SPEC_VALUE=unused\n+ '[' unused '!=' unused ']'\n+ (( i++ ))\n+ (( i < 1 ))\n+ '[' -n memcached ']'\n+ cat\n+ '[' Memcached == OpenStackControlPlane ']'\n+ '[' Memcached == Galera ']'\n+ '[' Memcached == NetConfig ']'\n+ '[' -n '' ']'\n+ [[ Memcached == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ [[ Memcached == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ '[' -n '' ']'\n+ kustomization_add_resources\n+ echo merge config dir\nmerge config dir\n++ find . -type f -name '*.yaml'\n++ grep -v kustomization\n+ yamls=./memcached_v1beta1_memcached.yaml\n+ for y in ${yamls[@]}\n+ kustomize edit add resource ./memcached_v1beta1_memcached.yaml\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\nmake wait\nmake[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nerror: the server doesn't have a resource type \"openstackversion\"\nbash scripts/operator-wait.sh\n+ TIMEOUT=500s\n+++ dirname scripts/operator-wait.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq ']'\n+ pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls\n+ timeout 500s bash -c 'until [ \"$(bash ./get-operator-status.sh)\" == \"Succeeded\" ]; do sleep 5; done'\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"infra-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z infra ']'\n+ '[' infra = rabbitmq-cluster ']'\n+ DEPL_NAME=infra-operator-controller-manager\n++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=1\n+ '[' 1 '!=' 1 ']'\n+ echo Succeeded\n+ exit 0\n+ rc=0\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\n+ exit 0\nmake[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nbash scripts/operator-deploy-resources.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']'\n+ NEXT_WAIT_TIME=0\n+ '[' 0 -eq 15 ']'\n+ oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr\n+ oc apply -f -\nmemcached.memcached.openstack.org/memcached created\n+ '[' 0 -lt 15 ']'\nbash scripts/gen-olm.sh\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' -z quay.io/openstack-k8s-operators/rabbitmq-cluster-operator-index:latest ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op\n+ OPERATOR_CHANNEL=alpha\n+ OPERATOR_SOURCE=rabbitmq-cluster-operator-index\n+ OPERATOR_SOURCE_NAMESPACE=openstack-operators\n+ echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op\nOPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op\n+ echo OPERATOR_CHANNEL alpha\nOPERATOR_CHANNEL alpha\n+ echo OPERATOR_SOURCE rabbitmq-cluster-operator-index\nOPERATOR_SOURCE rabbitmq-cluster-operator-index\n+ echo OPERATOR_SOURCE_NAMESPACE openstack-operators\nOPERATOR_SOURCE_NAMESPACE openstack-operators\n+ cat\n+ cat\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op\ncatalogsource.operators.coreos.com/rabbitmq-cluster-operator-index created\noperatorgroup.operators.coreos.com/openstack unchanged\nsubscription.operators.coreos.com/rabbitmq-cluster-operator created\nmkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr\nbash -c \"CHECKOUT_FROM_OPENSTACK_REF=false scripts/clone-operator-repo.sh\"\nCloning repo: git clone -b patches https://github.com/openstack-k8s-operators/rabbitmq-cluster-operator.git rabbitmq-operator\nCloning into 'rabbitmq-operator'...\ncp /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator/docs/examples/default-security-context/rabbitmq.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr\nbash scripts/gen-service-kustomize.sh\n+++ dirname scripts/gen-service-kustomize.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only\n++ set -e\n+ '[' -z keystone-kuttl-tests ']'\n+ '[' -z RabbitmqCluster ']'\n+ '[' -z osp-secret ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']'\n+ '[' -n '' ']'\n+ REPLACEMENTS=\n+ IMAGE=unused\n+ IMAGE_PATH=image\n+ STORAGE_REQUEST=10G\n+ INTERFACE_MTU=1500\n+ VLAN_START=20\n+ VLAN_STEP=1\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']'\n+ pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr\n~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ~/src/github.com/openstack-k8s-operators/install_yamls\n+ cat\n+ [[ RabbitmqCluster == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ IFS=,\n+ read -ra IMAGES\n+ IFS=,\n+ read -ra IMAGE_PATHS\n+ '[' 1 '!=' 1 ']'\n+ (( i=0 ))\n+ (( i < 1 ))\n+ SPEC_PATH=image\n+ SPEC_VALUE=unused\n+ '[' unused '!=' unused ']'\n+ (( i++ ))\n+ (( i < 1 ))\n+ '[' -n rabbitmq ']'\n+ cat\n+ '[' RabbitmqCluster == OpenStackControlPlane ']'\n+ '[' RabbitmqCluster == Galera ']'\n+ '[' RabbitmqCluster == NetConfig ']'\n+ '[' -n '' ']'\n+ [[ RabbitmqCluster == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ [[ RabbitmqCluster == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ '[' -n '' ']'\n+ kustomization_add_resources\n+ echo merge config dir\nmerge config dir\n++ find . -type f -name '*.yaml'\n++ grep -v kustomization\n+ yamls=./rabbitmq.yaml\n+ for y in ${yamls[@]}\n+ kustomize edit add resource ./rabbitmq.yaml\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\nmake wait\nmake[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nerror: the server doesn't have a resource type \"openstackversion\"\nbash scripts/operator-wait.sh\n+ TIMEOUT=500s\n+++ dirname scripts/operator-wait.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq ']'\n+ '[' rabbitmq = rabbitmq ']'\n+ OPERATOR_NAME=rabbitmq-cluster\n+ pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls\n+ timeout 500s bash -c 'until [ \"$(bash ./get-operator-status.sh)\" == \"Succeeded\" ]; do sleep 5; done'\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"rabbitmq-cluster-operator\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z rabbitmq-cluster ']'\n+ '[' rabbitmq-cluster = rabbitmq-cluster ']'\n+ DEPL_NAME=rabbitmq-cluster-operator\n++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=1\n+ '[' 1 '!=' 1 ']'\n+ echo Succeeded\n+ exit 0\n+ rc=0\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\n+ exit 0\nmake[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nbash scripts/operator-deploy-resources.sh\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']'\n+ NEXT_WAIT_TIME=0\n+ '[' 0 -eq 15 ']'\n+ oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr\n+ oc apply -f -\nrabbitmqcluster.rabbitmq.com/rabbitmq created\n+ '[' 0 -lt 15 ']'\nbash scripts/gen-olm.sh\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' -z 38.129.56.103:5001/openstack-k8s-operators/keystone-operator-index:aab5cfe1d4a691d84a96189c698c58d261af9e66 ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op ']'\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op ']'\n+ mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op\n+ OPERATOR_CHANNEL=alpha\n+ OPERATOR_SOURCE=keystone-operator-index\n+ OPERATOR_SOURCE_NAMESPACE=openstack-operators\n+ echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op\nOPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op\n+ echo OPERATOR_CHANNEL alpha\nOPERATOR_CHANNEL alpha\n+ echo OPERATOR_SOURCE keystone-operator-index\nOPERATOR_SOURCE keystone-operator-index\n+ echo OPERATOR_SOURCE_NAMESPACE openstack-operators\nOPERATOR_SOURCE_NAMESPACE openstack-operators\n+ cat\n+ cat\n+ cat\noc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op\ncatalogsource.operators.coreos.com/keystone-operator-index created\noperatorgroup.operators.coreos.com/openstack unchanged\nsubscription.operators.coreos.com/keystone-operator created\nmkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr\nbash scripts/clone-operator-repo.sh\nCloning repo: git clone /home/zuul/src/github.com/openstack-k8s-operators/keystone-operator keystone-operator\nCloning into 'keystone-operator'...\ndone.\ncp /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/config/samples/keystone_v1beta1_keystoneapi.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr\nbash scripts/gen-service-kustomize.sh\n+++ dirname scripts/gen-service-kustomize.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only\n++ set -e\n+ '[' -z keystone-kuttl-tests ']'\n+ '[' -z KeystoneAPI ']'\n+ '[' -z osp-secret ']'\n+ '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ']'\n+ '[' -n '' ']'\n+ REPLACEMENTS=\n+ IMAGE=unused\n+ IMAGE_PATH=containerImage\n+ STORAGE_REQUEST=10G\n+ INTERFACE_MTU=1500\n+ VLAN_START=20\n+ VLAN_STEP=1\n+ '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ']'\n+ pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr\n~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ~/src/github.com/openstack-k8s-operators/install_yamls\n+ cat\n+ [[ KeystoneAPI == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ IFS=,\n+ read -ra IMAGES\n+ IFS=,\n+ read -ra IMAGE_PATHS\n+ '[' 1 '!=' 1 ']'\n+ (( i=0 ))\n+ (( i < 1 ))\n+ SPEC_PATH=containerImage\n+ SPEC_VALUE=unused\n+ '[' unused '!=' unused ']'\n+ (( i++ ))\n+ (( i < 1 ))\n+ '[' -n '' ']'\n+ '[' KeystoneAPI == OpenStackControlPlane ']'\n+ '[' KeystoneAPI == Galera ']'\n+ '[' KeystoneAPI == NetConfig ']'\n+ '[' -n '' ']'\n+ [[ KeystoneAPI == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ [[ KeystoneAPI == \\O\\p\\e\\n\\S\\t\\a\\c\\k\\C\\o\\n\\t\\r\\o\\l\\P\\l\\a\\n\\e ]]\n+ '[' -n '' ']'\n+ kustomization_add_resources\n+ echo merge config dir\nmerge config dir\n++ find . -type f -name '*.yaml'\n++ grep -v kustomization\n+ yamls=./keystone_v1beta1_keystoneapi.yaml\n+ for y in ${yamls[@]}\n+ kustomize edit add resource ./keystone_v1beta1_keystoneapi.yaml\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\nmake wait\nmake[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nerror: the server doesn't have a resource type \"openstackversion\"\nbash scripts/operator-wait.sh\n+ TIMEOUT=500s\n+++ dirname scripts/operator-wait.sh\n++ cd scripts\n++ pwd -P\n+ SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq ']'\n+ pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts\n~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls\n+ timeout 500s bash -c 'until [ \"$(bash ./get-operator-status.sh)\" == \"Succeeded\" ]; do sleep 5; done'\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\nError from server (NotFound): deployments.apps \"keystone-operator-controller-manager\" not found\n+ REPLICAS=\n+ '[' '' '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=null\n+ '[' null '!=' 1 ']'\n+ exit 1\n+ '[' -z openstack-operators ']'\n+ '[' -z keystone ']'\n+ '[' keystone = rabbitmq-cluster ']'\n+ DEPL_NAME=keystone-operator-controller-manager\n++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json\n++ jq -e .status.availableReplicas\n+ REPLICAS=1\n+ '[' 1 '!=' 1 ']'\n+ echo Succeeded\n+ exit 0\n+ rc=0\n+ popd\n~/src/github.com/openstack-k8s-operators/install_yamls\n+ exit 0\nmake[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nmake keystone_kuttl_run\nmake[1]: Entering directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nerror: the server doesn't have a resource type \"openstackversion\"\nKEYSTONE_KUTTL_DIR=/home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests kubectl-kuttl test --config /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/kuttl-test.yaml /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests --namespace keystone-kuttl-tests \n2025/11/25 09:45:58 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests ]\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 800 seconds for each step\n harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests has 5 tests\n=== RUN kuttl/harness\n=== RUN kuttl/harness/change_keystone_config\n=== PAUSE kuttl/harness/change_keystone_config\n=== RUN kuttl/harness/fernet_rotation\n=== PAUSE kuttl/harness/fernet_rotation\n=== RUN kuttl/harness/keystone_resources\n=== PAUSE kuttl/harness/keystone_resources\n=== RUN kuttl/harness/keystone_scale\n=== PAUSE kuttl/harness/keystone_scale\n=== RUN kuttl/harness/keystone_tls\n=== PAUSE kuttl/harness/keystone_tls\n=== CONT kuttl/harness/change_keystone_config\n logger.go:42: 09:45:58 | change_keystone_config | Skipping creation of user-supplied namespace: keystone-kuttl-tests\n logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | starting test step 0-deploy_keystone\n logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created\n logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:45:59 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:45:59 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:00 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:00 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:01 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:02 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:03 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:03 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:04 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:04 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:05 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:05 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:06 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:06 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:07 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:07 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:08 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:09 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:10 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:10 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:11 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:11 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:12 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:12 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:13 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:13 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:14 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:14 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:15 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:16 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:17 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:17 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:18 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:18 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:19 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:19 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:20 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:20 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:21 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:22 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:23 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:23 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:46:24 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:25 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:26 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:27 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:28 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:30 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:31 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:32 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:33 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:34 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:36 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:37 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:38 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:39 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:40 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:42 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:43 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:44 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:45 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:46 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:48 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:49 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:50 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:51 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:52 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:53 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:55 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:56 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:57 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:58 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:46:59 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:01 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:02 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:02 | change_keystone_config/0-deploy_keystone | test step completed 0-deploy_keystone\n \ logger.go:42: 09:47:02 | change_keystone_config/1- | starting test step 1-\n \ logger.go:42: 09:47:02 | change_keystone_config/1- | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh]\n logger.go:42: 09:47:02 | change_keystone_config/1- | test step completed 1-\n logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | starting test step 2-change_keystone_config\n logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/customServiceConfig\", \"value\": \"[DEFAULT]\\ndebug = false\"}]'\n ]\n logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | keystoneapi.keystone.openstack.org/keystone patched\n logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh --reverse]\n logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh --reverse]\n logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | error: arguments in resource/name form may not have more than one slash\n logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | test step completed 2-change_keystone_config\n logger.go:42: 09:47:04 | change_keystone_config/3-cleanup-keystone | starting test step 3-cleanup-keystone\n logger.go:42: 09:47:08 | change_keystone_config/3-cleanup-keystone | test step completed 3-cleanup-keystone\n logger.go:42: 09:47:08 | change_keystone_config | skipping kubernetes event logging\n=== CONT kuttl/harness/keystone_scale\n logger.go:42: 09:47:08 | keystone_scale | Skipping creation of user-supplied namespace: keystone-kuttl-tests\n \ logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | starting test step 0-deploy_keystone\n logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created\n logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:09 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:10 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:10 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:11 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:11 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:12 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:12 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:13 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:13 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:14 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:14 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:15 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:16 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:17 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:17 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:18 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:18 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:19 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:19 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:20 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:20 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:47:21 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:22 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:24 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:25 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:26 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:27 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:28 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:30 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:31 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:32 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:33 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:34 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:36 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:37 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:38 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:39 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:40 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:41 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:43 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:44 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:45 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:46 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:47 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:49 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:50 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:51 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:52 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:53 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:55 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:56 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:57 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:58 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:59 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:47:59 | keystone_scale/0-deploy_keystone | test step completed 0-deploy_keystone\n logger.go:42: 09:47:59 | keystone_scale/1-scale-keystoneapi | starting test step 1-scale-keystoneapi\n \ logger.go:42: 09:47:59 | keystone_scale/1-scale-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/replicas\", \"value\":3}]'\n ]\n logger.go:42: 09:48:00 | keystone_scale/1-scale-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched\n logger.go:42: 09:48:32 | keystone_scale/1-scale-keystoneapi | test step completed 1-scale-keystoneapi\n logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | starting test step 2-scale-down-keystoneapi\n logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/replicas\", \"value\":1}]'\n ]\n \ logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched\n logger.go:42: 09:48:33 | keystone_scale/2-scale-down-keystoneapi | test step completed 2-scale-down-keystoneapi\n logger.go:42: 09:48:33 | keystone_scale/3-scale-down-zero-keystoneapi | starting test step 3-scale-down-zero-keystoneapi\n logger.go:42: 09:48:33 | keystone_scale/3-scale-down-zero-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type='json' -p='[{\"op\": \"replace\", \"path\": \"/spec/replicas\", \"value\":0}]'\n ]\n logger.go:42: 09:48:34 | keystone_scale/3-scale-down-zero-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched\n logger.go:42: 09:48:39 | keystone_scale/3-scale-down-zero-keystoneapi | test step completed 3-scale-down-zero-keystoneapi\n \ logger.go:42: 09:48:39 | keystone_scale/4-cleanup-keystone | starting test step 4-cleanup-keystone\n logger.go:42: 09:48:39 | keystone_scale/4-cleanup-keystone | test step completed 4-cleanup-keystone\n logger.go:42: 09:48:39 | keystone_scale | skipping kubernetes event logging\n=== CONT kuttl/harness/keystone_tls\n logger.go:42: 09:48:39 | keystone_tls | Skipping creation of user-supplied namespace: keystone-kuttl-tests\n \ logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | starting test step 0-tls_ca_bundle\n \ logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/combined-ca-bundle created\n logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/cert-keystone-internal-svc created\n logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/cert-keystone-public-svc created\n logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | test step completed 0-tls_ca_bundle\n logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | starting test step 1-keystoneapi_tls_deploy\n logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | KeystoneAPI:keystone-kuttl-tests/keystone created\n logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:40 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:40 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:41 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:42 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:43 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:43 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:44 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:44 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:45 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:45 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:46 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:46 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:47 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:47 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:48 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:48 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:50 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:50 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:51 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:51 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:52 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:52 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:53 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:53 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:54 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:54 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex\n logger.go:42: 09:48:55 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:57 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:58 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:48:59 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:00 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:01 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:02 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:03 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:05 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:06 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:07 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:08 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:09 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:10 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:12 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:13 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:14 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:15 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:16 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:17 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:19 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:20 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:21 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:22 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:23 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:24 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:26 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:27 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:28 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:29 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:30 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:31 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:33 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:34 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"https:\\/\\/keystone-internal.$NAMESPACE.*:https:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n ]\n \ logger.go:42: 09:49:34 | keystone_tls/1-keystoneapi_tls_deploy | test step completed 1-keystoneapi_tls_deploy\n logger.go:42: 09:49:34 | keystone_tls/2-cleanup-keystone | starting test step 2-cleanup-keystone\n logger.go:42: 09:49:39 | keystone_tls/2-cleanup-keystone | test step completed 2-cleanup-keystone\n logger.go:42: 09:49:39 | keystone_tls | skipping kubernetes event logging\n=== CONT kuttl/harness/keystone_resources\n \ logger.go:42: 09:49:39 | keystone_resources | Skipping creation of user-supplied namespace: keystone-kuttl-tests\n logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | starting test step 0-deploy_keystone\n logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created\n logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:40 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:40 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:42 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:42 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:43 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:43 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:44 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:44 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:45 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:45 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:46 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:46 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:47 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:47 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:49 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:49 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:49:50 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:51 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:52 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:53 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:54 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:56 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:57 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:58 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:49:59 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:00 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:01 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:03 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:04 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:05 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:06 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:07 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:09 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:10 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:11 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:12 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:13 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:15 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:16 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:17 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:18 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:19 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:20 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:22 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:23 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:24 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:25 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:26 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:28 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:28 | keystone_resources/0-deploy_keystone | test step completed 0-deploy_keystone\n \ logger.go:42: 09:50:28 | keystone_resources/1-deploy-keystoneservice | starting test step 1-deploy-keystoneservice\n logger.go:42: 09:50:28 | keystone_resources/1-deploy-keystoneservice | KeystoneService:keystone-kuttl-tests/placement created\n logger.go:42: 09:50:30 | keystone_resources/1-deploy-keystoneservice | test step completed 1-deploy-keystoneservice\n \ logger.go:42: 09:50:30 | keystone_resources/2-deploy-keystoneendpoint | starting test step 2-deploy-keystoneendpoint\n logger.go:42: 09:50:30 | keystone_resources/2-deploy-keystoneendpoint | KeystoneEndpoint:keystone-kuttl-tests/placement created\n logger.go:42: 09:50:41 | keystone_resources/2-deploy-keystoneendpoint | test step completed 2-deploy-keystoneendpoint\n \ logger.go:42: 09:50:41 | keystone_resources/3-cleanup-keystoneendpoint | starting test step 3-cleanup-keystoneendpoint\n logger.go:42: 09:50:42 | keystone_resources/3-cleanup-keystoneendpoint | test step completed 3-cleanup-keystoneendpoint\n logger.go:42: 09:50:42 | keystone_resources/4-cleanup-keystoneservice | starting test step 4-cleanup-keystoneservice\n logger.go:42: 09:50:44 | keystone_resources/4-cleanup-keystoneservice | test step completed 4-cleanup-keystoneservice\n logger.go:42: 09:50:44 | keystone_resources/5-cleanup-keystone | starting test step 5-cleanup-keystone\n logger.go:42: 09:50:48 | keystone_resources/5-cleanup-keystone | test step completed 5-cleanup-keystone\n logger.go:42: 09:50:48 | keystone_resources | skipping kubernetes event logging\n=== CONT kuttl/harness/fernet_rotation\n logger.go:42: 09:50:48 | fernet_rotation | Skipping creation of user-supplied namespace: keystone-kuttl-tests\n \ logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | starting test step 0-deploy_keystone\n logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created\n logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:49 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:49 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:50 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:51 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:52 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:52 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:53 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:53 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:54 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:54 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:55 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:55 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:56 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:56 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:57 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:58 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:50:59 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:50:59 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:51:00 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:00 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex\n logger.go:42: 09:51:01 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:02 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:03 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:04 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:06 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:07 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:08 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:09 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:10 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:11 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:13 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:14 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:15 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:16 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:17 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:19 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:20 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:21 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:22 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:23 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:25 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:26 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:27 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:28 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:29 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:31 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:32 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:33 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:34 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:35 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:37 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:38 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:39 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:40 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can't rely on\n # kuttl asserts to check them. This short script gathers the addresses and checks that\n \ # the three endpoints are defined and their addresses follow the default pattern\n template='{{.status.apiEndpoints.internal}}{{\":\"}}{{.status.apiEndpoints.public}}{{\"\\n\"}}'\n \ regex=\"http:\\/\\/keystone-internal.$NAMESPACE.*:http:\\/\\/keystone-public.$NAMESPACE.*\"\n \ apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template=\"$template\")\n \ matches=$(echo \"$apiEndpoints\" | sed -e \"s?$regex??\")\n if [ -z \"$matches\" ]; then\n exit 0\n else\n echo \"Endpoints URLS: $apiEndpoints do not match regex\"\n exit 1\n fi\n \n \ # when using image digests the containerImage URLs are SHA's so we verify them with a script\n tupleTemplate='{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ \"#\" }}{{ .value}}{{\"\\n\"}}{{ end }}'\n imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template=\"$tupleTemplate\")\n \ # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines\n for ITEM in $(echo $imageTuples); do\n # it is an image\n if echo $ITEM | grep 'RELATED_IMAGE' &> /dev/null; then\n \ NAME=$(echo $ITEM | sed -e 's|^RELATED_IMAGE_KEYSTONE_\\([^_]*\\)_.*|\\1|')\n \ IMG_FROM_ENV=$(echo $ITEM | sed -e 's|^.*#\\(.*\\)|\\1|')\n template='{{.spec.containerImage}}'\n \ case $NAME in\n API)\n SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template=\"$template\")\n ;;\n \ esac\n if [ \"$SERVICE_IMAGE\" != \"$IMG_FROM_ENV\" ]; then\n \ echo \"$NAME image does not equal $VALUE\"\n exit 1\n \ fi\n fi\n done\n ]\n logger.go:42: 09:51:40 | fernet_rotation/0-deploy_keystone | test step completed 0-deploy_keystone\n logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | starting test step 1-deploy_openstackclient\n \ logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | Pod:keystone-kuttl-tests/openstackclient created\n logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | running command: [sh -c ../../common/scripts/create_test_token.sh]\n logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | + oc wait --for=condition=ready pod openstackclient --timeout=30s -n keystone-kuttl-tests\n logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | pod/openstackclient condition met\n \ logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | + alias 'openstack=oc exec -tn keystone-kuttl-tests openstackclient -- openstack'\n logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | ++ oc exec -tn keystone-kuttl-tests openstackclient -- openstack token issue -f value -c id\n logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + echo gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | test step completed 1-deploy_openstackclient\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | starting test step 2-rotate_keys\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | Secret:keystone-kuttl-tests/keystone updated\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | running command: [sh -c ../../common/scripts/validate_test_token.sh]\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + seconds=1\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + '[' 1 -le 30 ']'\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | ++ oc get secret keystone -n keystone-kuttl-tests -o 'jsonpath={.metadata.annotations['\\''keystone\\.openstack\\.org/rotatedat'\\'']}'\n \ logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + rotatedat=2025-11-25T09:51:54Z\n \ logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + '[' 2025-11-25T09:51:54Z '!=' 2009-11-10T23:00:00Z ']'\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + break\n logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + sleep 60\n logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | ++ true\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + output='The service catalog is empty.\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | command terminated with exit code 1'\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + echo 'The service catalog is empty.\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | command terminated with exit code 1'\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + grep -qi 'Could not recognize Fernet token'\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + exit 0\n logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | test step completed 2-rotate_keys\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | starting test step 3-rotate_keys_until_invalidate\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/rotate_token.sh]\n \ logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + TMP_SECRET_FILE=/tmp/keystone-secret.yaml\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Starting rotation 1...'\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 1...\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + cat\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | Warning: resource secrets/keystone is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically.\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured\n logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Rotation 1 completed successfully.'\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 1 completed successfully.\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Starting rotation 2...'\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 2...\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + cat\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml\n logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured\n logger.go:42: 09:54:38 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Rotation 2 completed successfully.'\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 2 completed successfully.\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Starting rotation 3...'\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 3...\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + cat\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured\n logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Rotation 3 completed successfully.'\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 3 completed successfully.\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Starting rotation 4...'\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 4...\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + cat\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured\n logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Rotation 4 completed successfully.'\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 4 completed successfully.\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Starting rotation 5...'\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 5...\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + cat\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured\n logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Rotation 5 completed successfully.'\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 5 completed successfully.\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + rm -f /tmp/keystone-secret.yaml\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'All rotations completed successfully.'\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | All rotations completed successfully.\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 0\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + output='The service catalog is empty.\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'The service catalog is empty.\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1\n logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]\n logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token\n \ logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I\n \ logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + output='Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)\n \ logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo 'Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)\n \ logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1'\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i 'Could not recognize Fernet token'\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output='Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)'\n \ logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q 'Could not recognize Fernet token'\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + echo 'Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)'\n \ logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 0\n logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | test step completed 3-rotate_keys_until_invalidate\n logger.go:42: 10:01:55 | fernet_rotation/4-cleanup-openstackclient | starting test step 4-cleanup-openstackclient\n \ logger.go:42: 10:01:56 | fernet_rotation/4-cleanup-openstackclient | test step completed 4-cleanup-openstackclient\n logger.go:42: 10:01:56 | fernet_rotation/5-cleanup-keystone | starting test step 5-cleanup-keystone\n case.go:396: failed in step 5-cleanup-keystone\n \ case.go:398: Get \"https://api.crc.testing:6443/apis/keystone.openstack.org/v1beta1/namespaces/keystone-kuttl-tests/keystoneapis/keystone\": dial tcp 38.102.83.5:6443: connect: connection refused\n logger.go:42: 10:02:01 | fernet_rotation | skipping kubernetes event logging\n step.go:213: Delete \"https://api.crc.testing:6443/api/v1/namespaces/keystone-kuttl-tests/pods/openstackclient\": dial tcp 38.102.83.5:6443: connect: connection refused\n step.go:213: Delete \"https://api.crc.testing:6443/apis/keystone.openstack.org/v1beta1/namespaces/keystone-kuttl-tests/keystoneapis/keystone\": dial tcp 38.102.83.5:6443: connect: connection refused\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 (963.06s)\n --- FAIL: kuttl/harness (0.00s)\n \ --- PASS: kuttl/harness/change_keystone_config (70.68s)\n --- PASS: kuttl/harness/keystone_scale (90.56s)\n --- PASS: kuttl/harness/keystone_tls (60.23s)\n --- PASS: kuttl/harness/keystone_resources (68.82s)\n --- FAIL: kuttl/harness/fernet_rotation (672.76s)\nFAIL\nmake[1]: *** [Makefile:1807: keystone_kuttl_run] Error 1\nmake[1]: Leaving directory '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls'\nmake: *** [Makefile:1816: keystone_kuttl] Error 2\n" stdout_lines: - ~/src/github.com/openstack-k8s-operators/install_yamls ~/ci-framework-data/artifacts - 'error: the server doesn''t have a resource type "openstackversion"' - bash scripts/gen-namespace.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' - + '[' -z keystone-kuttl-tests ']' - + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/namespace.yaml - namespace/keystone-kuttl-tests created - timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io keystone-kuttl-tests); do sleep 1; done" - NAME DISPLAY NAME STATUS - keystone-kuttl-tests Active - oc project keystone-kuttl-tests - Now using project "keystone-kuttl-tests" on server "https://api.crc.testing:6443". - bash scripts/gen-input-kustomize.sh - + OUT=/home/zuul/ci-framework-data/artifacts/manifests - + '[' -z keystone-kuttl-tests ']' - + '[' -z osp-secret ']' - + '[' -z 12345678 ']' - + '[' -z 1234567842 ']' - + '[' -z 767c3ed056cbaa3b9dfedb8c6f825bf0 ']' - + '[' -z sEFmdFjDUqRM2VemYslV5yGNWjokioJXsg8Nrlc3drU= ']' - + '[' -z COX8bmlKAWn56XCGMrKQJj7dgHNAOl6f ']' - + '[' -z openstack ']' - + '[' -z libvirt-secret ']' - + DIR=/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input - + pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input - ~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input ~/src/github.com/openstack-k8s-operators/install_yamls - + cat - oc get secret/osp-secret || oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/input | oc apply -f - - 'Error from server (NotFound): secrets "osp-secret" not found' - secret/libvirt-secret created - secret/octavia-ca-passphrase created - secret/osp-secret created - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/manila-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/manila/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists manila;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/heat-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/heat/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/horizon-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/horizon/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/nova-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/nova/cr - oc rsh openstack-galera-0 mysql -u root --password=12345678 -ss -e "show databases like 'nova_%';" | xargs -I '{}' oc rsh openstack-galera-0 mysql -u root --password=12345678 -ss -e "flush tables; drop database if exists {};" - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator-redis /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra-redis/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/octavia-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/octavia/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists octavia;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/designate-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/designate/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists designate;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/neutron-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/neutron/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists neutron;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ovn-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ovn/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ironic-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/ironic/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists ironic;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists ironic_inspector;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/cinder-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/cinder/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists cinder;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/glance-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/glance/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists glance;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/placement-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/placement/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists placement;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift: no such file or directory' - No resources found - rm -Rf -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/swift-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/swift/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/barbican-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/barbican/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists barbican;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists keystone;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/telemetry-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/ceilometer-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/telemetry/cr - oc rsh -t openstack-galera-0 mysql -u root --password=12345678 -e "flush tables; drop database if exists aodh;" || true - 'Error from server (NotFound): pods "openstack-galera-0" not found' - oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr | oc delete --ignore-not-found=true -f - - 'error: must build at directory: not a valid directory: evalsymlink failure on ''/home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr'' : lstat /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra: no such file or directory' - No resources found - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr - if oc get RabbitmqCluster; then oc delete --ignore-not-found=true RabbitmqCluster --all; fi - 'error: the server doesn''t have a resource type "RabbitmqCluster"' - rm -Rf /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr - bash scripts/gen-namespace.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' - + '[' -z openstack-operators ']' - + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/openstack-operators - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/namespace.yaml - 'Warning: resource namespaces/openstack-operators is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically.' - namespace/openstack-operators configured - timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io openstack-operators); do sleep 1; done" - NAME DISPLAY NAME STATUS - openstack-operators Active - oc project openstack-operators - Now using project "openstack-operators" on server "https://api.crc.testing:6443". - bash scripts/gen-olm.sh - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' -z quay.io/openstack-k8s-operators/mariadb-operator-index:latest ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op - + OPERATOR_CHANNEL=alpha - + OPERATOR_SOURCE=mariadb-operator-index - + OPERATOR_SOURCE_NAMESPACE=openstack-operators - + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op - OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op - + echo OPERATOR_CHANNEL alpha - OPERATOR_CHANNEL alpha - + echo OPERATOR_SOURCE mariadb-operator-index - OPERATOR_SOURCE mariadb-operator-index - + echo OPERATOR_SOURCE_NAMESPACE openstack-operators - OPERATOR_SOURCE_NAMESPACE openstack-operators - + cat - + cat - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op - catalogsource.operators.coreos.com/mariadb-operator-index created - operatorgroup.operators.coreos.com/openstack created - subscription.operators.coreos.com/mariadb-operator created - mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/mariadb/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr - bash scripts/clone-operator-repo.sh - 'Cloning repo: git clone -b main https://github.com/openstack-k8s-operators/openstack-operator.git openstack-operator' - Cloning into 'openstack-operator'... - 'Cloning repo: git clone -b main https://github.com/openstack-k8s-operators/mariadb-operator.git mariadb-operator' - Cloning into 'mariadb-operator'... - 'Running checkout: git checkout 231c653930d1' - 'Note: switching to ''231c653930d1''.' - '' - You are in 'detached HEAD' state. You can look around, make experimental - changes and commit them, and you can discard any commits you make in this - state without impacting any branches by switching back to a branch. - '' - If you want to create a new branch to retain commits you create, you may - 'do so (now or later) by using -c with the switch command. Example:' - '' - ' git switch -c ' - '' - 'Or undo this operation with:' - '' - ' git switch -' - '' - Turn off this advice by setting config variable advice.detachedHead to false - '' - 'HEAD is now at 231c653 Merge pull request #379 from dciabrin/pwd-wsrep-notify' - cp /home/zuul/ci-framework-data/artifacts/manifests/operator/mariadb-operator/config/samples/mariadb_v1beta1_galera.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr - bash scripts/gen-service-kustomize.sh - +++ dirname scripts/gen-service-kustomize.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only - ++ set -e - + '[' -z keystone-kuttl-tests ']' - + '[' -z Galera ']' - + '[' -z osp-secret ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']' - + '[' -n '' ']' - + REPLACEMENTS= - + IMAGE=unused - + IMAGE_PATH=containerImage - + STORAGE_REQUEST=10G - + INTERFACE_MTU=1500 - + VLAN_START=20 - + VLAN_STEP=1 - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']' - + pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr - ~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ~/src/github.com/openstack-k8s-operators/install_yamls - + cat - + [[ Galera == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + IFS=, - + read -ra IMAGES - + IFS=, - + read -ra IMAGE_PATHS - + '[' 1 '!=' 1 ']' - + (( i=0 )) - + (( i < 1 )) - + SPEC_PATH=containerImage - + SPEC_VALUE=unused - + '[' unused '!=' unused ']' - + (( i++ )) - + (( i < 1 )) - + '[' -n '' ']' - + '[' Galera == OpenStackControlPlane ']' - + '[' Galera == Galera ']' - + cat - + '[' Galera == NetConfig ']' - + '[' -n '' ']' - + [[ Galera == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + [[ Galera == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + '[' -n '' ']' - + kustomization_add_resources - + echo merge config dir - merge config dir - ++ find . -type f -name '*.yaml' - ++ grep -v kustomization - + yamls=./mariadb_v1beta1_galera.yaml - + for y in ${yamls[@]} - + kustomize edit add resource ./mariadb_v1beta1_galera.yaml - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - make wait - 'make[1]: Entering directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'error: the server doesn''t have a resource type "openstackversion"' - bash scripts/operator-wait.sh - + TIMEOUT=500s - +++ dirname scripts/operator-wait.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq ']' - + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls - + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "mariadb-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "mariadb-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "mariadb-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "mariadb-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "mariadb-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z mariadb ']' - + '[' mariadb = rabbitmq-cluster ']' - + DEPL_NAME=mariadb-operator-controller-manager - ++ oc get -n openstack-operators deployment mariadb-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=1 - + '[' 1 '!=' 1 ']' - + echo Succeeded - + exit 0 - + rc=0 - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - + exit 0 - 'make[1]: Leaving directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - bash scripts/operator-deploy-resources.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr ']' - + NEXT_WAIT_TIME=0 - + '[' 0 -eq 15 ']' - + oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/mariadb/cr - + oc apply -f - - galera.mariadb.openstack.org/openstack created - + '[' 0 -lt 15 ']' - bash scripts/gen-namespace.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests ']' - + '[' -z metallb-system ']' - + OUT_DIR=/home/zuul/ci-framework-data/artifacts/manifests/metallb-system - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/namespace.yaml - namespace/metallb-system created - timeout 500s bash -c "while ! (oc get project.v1.project.openshift.io metallb-system); do sleep 1; done" - NAME DISPLAY NAME STATUS - metallb-system Active - bash scripts/gen-olm-metallb.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr - + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op - OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op - + echo DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr - DEPLOY_DIR /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr - + echo INTERFACE - INTERFACE - + cat - + cat - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/metallb/op - operatorgroup.operators.coreos.com/metallb-operator created - subscription.operators.coreos.com/metallb-operator-sub created - timeout 500s bash -c "while ! (oc get pod --no-headers=true -l control-plane=controller-manager -n metallb-system| grep metallb-operator-controller); do sleep 10; done" - No resources found in metallb-system namespace. - No resources found in metallb-system namespace. - metallb-operator-controller-manager-664f78b8b-n7g4f 0/1 ContainerCreating 0 3s - oc wait pod -n metallb-system --for condition=Ready -l control-plane=controller-manager --timeout=500s - pod/metallb-operator-controller-manager-664f78b8b-n7g4f condition met - timeout 500s bash -c "while ! (oc get pod --no-headers=true -l component=webhook-server -n metallb-system| grep metallb-operator-webhook); do sleep 10; done" - metallb-operator-webhook-server-75bd4c87d6-fr76c 1/1 Running 0 41s - oc wait pod -n metallb-system --for condition=Ready -l component=webhook-server --timeout=500s - pod/metallb-operator-webhook-server-75bd4c87d6-fr76c condition met - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/metallb-system/metallb/cr/deploy_operator.yaml - metallb.metallb.io/metallb created - timeout 500s bash -c "while ! (oc get pod --no-headers=true -l component=speaker -n metallb-system | grep speaker); do sleep 10; done" - No resources found in metallb-system namespace. - speaker-j6bv7 1/2 Running 0 10s - oc wait pod -n metallb-system -l component=speaker --for condition=Ready --timeout=500s - pod/speaker-j6bv7 condition met - bash scripts/gen-olm.sh - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' -z quay.io/openstack-k8s-operators/infra-operator-index:latest ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op - + OPERATOR_CHANNEL=alpha - + OPERATOR_SOURCE=infra-operator-index - + OPERATOR_SOURCE_NAMESPACE=openstack-operators - + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op - OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op - + echo OPERATOR_CHANNEL alpha - OPERATOR_CHANNEL alpha - + echo OPERATOR_SOURCE infra-operator-index - OPERATOR_SOURCE infra-operator-index - + echo OPERATOR_SOURCE_NAMESPACE openstack-operators - OPERATOR_SOURCE_NAMESPACE openstack-operators - + cat - + cat - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op - catalogsource.operators.coreos.com/infra-operator-index created - operatorgroup.operators.coreos.com/openstack unchanged - subscription.operators.coreos.com/infra-operator created - mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/infra/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr - bash scripts/clone-operator-repo.sh - 'Cloning repo: git clone -b main https://github.com/openstack-k8s-operators/infra-operator.git infra-operator' - Cloning into 'infra-operator'... - 'Running checkout: git checkout 038f0cf579da' - 'Note: switching to ''038f0cf579da''.' - '' - You are in 'detached HEAD' state. You can look around, make experimental - changes and commit them, and you can discard any commits you make in this - state without impacting any branches by switching back to a branch. - '' - If you want to create a new branch to retain commits you create, you may - 'do so (now or later) by using -c with the switch command. Example:' - '' - ' git switch -c ' - '' - 'Or undo this operation with:' - '' - ' git switch -' - '' - Turn off this advice by setting config variable advice.detachedHead to false - '' - 'HEAD is now at 038f0cf Merge pull request #498 from stuggi/pin_baseimage' - cp /home/zuul/ci-framework-data/artifacts/manifests/operator/infra-operator/config/samples/memcached_v1beta1_memcached.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr - bash scripts/gen-service-kustomize.sh - +++ dirname scripts/gen-service-kustomize.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only - ++ set -e - + '[' -z keystone-kuttl-tests ']' - + '[' -z Memcached ']' - + '[' -z osp-secret ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']' - + '[' -n '' ']' - + REPLACEMENTS= - + IMAGE=unused - + IMAGE_PATH=containerImage - + STORAGE_REQUEST=10G - + INTERFACE_MTU=1500 - + VLAN_START=20 - + VLAN_STEP=1 - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']' - + pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr - ~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ~/src/github.com/openstack-k8s-operators/install_yamls - + cat - + [[ Memcached == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + IFS=, - + read -ra IMAGES - + IFS=, - + read -ra IMAGE_PATHS - + '[' 1 '!=' 1 ']' - + (( i=0 )) - + (( i < 1 )) - + SPEC_PATH=containerImage - + SPEC_VALUE=unused - + '[' unused '!=' unused ']' - + (( i++ )) - + (( i < 1 )) - + '[' -n memcached ']' - + cat - + '[' Memcached == OpenStackControlPlane ']' - + '[' Memcached == Galera ']' - + '[' Memcached == NetConfig ']' - + '[' -n '' ']' - + [[ Memcached == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + [[ Memcached == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + '[' -n '' ']' - + kustomization_add_resources - + echo merge config dir - merge config dir - ++ find . -type f -name '*.yaml' - ++ grep -v kustomization - + yamls=./memcached_v1beta1_memcached.yaml - + for y in ${yamls[@]} - + kustomize edit add resource ./memcached_v1beta1_memcached.yaml - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - make wait - 'make[1]: Entering directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'error: the server doesn''t have a resource type "openstackversion"' - bash scripts/operator-wait.sh - + TIMEOUT=500s - +++ dirname scripts/operator-wait.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq ']' - + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls - + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "infra-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z infra ']' - + '[' infra = rabbitmq-cluster ']' - + DEPL_NAME=infra-operator-controller-manager - ++ oc get -n openstack-operators deployment infra-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=1 - + '[' 1 '!=' 1 ']' - + echo Succeeded - + exit 0 - + rc=0 - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - + exit 0 - 'make[1]: Leaving directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - bash scripts/operator-deploy-resources.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr ']' - + NEXT_WAIT_TIME=0 - + '[' 0 -eq 15 ']' - + oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/infra/cr - + oc apply -f - - memcached.memcached.openstack.org/memcached created - + '[' 0 -lt 15 ']' - bash scripts/gen-olm.sh - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' -z quay.io/openstack-k8s-operators/rabbitmq-cluster-operator-index:latest ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op - + OPERATOR_CHANNEL=alpha - + OPERATOR_SOURCE=rabbitmq-cluster-operator-index - + OPERATOR_SOURCE_NAMESPACE=openstack-operators - + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op - OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op - + echo OPERATOR_CHANNEL alpha - OPERATOR_CHANNEL alpha - + echo OPERATOR_SOURCE rabbitmq-cluster-operator-index - OPERATOR_SOURCE rabbitmq-cluster-operator-index - + echo OPERATOR_SOURCE_NAMESPACE openstack-operators - OPERATOR_SOURCE_NAMESPACE openstack-operators - + cat - + cat - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq-cluster/op - catalogsource.operators.coreos.com/rabbitmq-cluster-operator-index created - operatorgroup.operators.coreos.com/openstack unchanged - subscription.operators.coreos.com/rabbitmq-cluster-operator created - mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/rabbitmq/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr - bash -c "CHECKOUT_FROM_OPENSTACK_REF=false scripts/clone-operator-repo.sh" - 'Cloning repo: git clone -b patches https://github.com/openstack-k8s-operators/rabbitmq-cluster-operator.git rabbitmq-operator' - Cloning into 'rabbitmq-operator'... - cp /home/zuul/ci-framework-data/artifacts/manifests/operator/rabbitmq-operator/docs/examples/default-security-context/rabbitmq.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr - bash scripts/gen-service-kustomize.sh - +++ dirname scripts/gen-service-kustomize.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only - ++ set -e - + '[' -z keystone-kuttl-tests ']' - + '[' -z RabbitmqCluster ']' - + '[' -z osp-secret ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']' - + '[' -n '' ']' - + REPLACEMENTS= - + IMAGE=unused - + IMAGE_PATH=image - + STORAGE_REQUEST=10G - + INTERFACE_MTU=1500 - + VLAN_START=20 - + VLAN_STEP=1 - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']' - + pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr - ~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ~/src/github.com/openstack-k8s-operators/install_yamls - + cat - + [[ RabbitmqCluster == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + IFS=, - + read -ra IMAGES - + IFS=, - + read -ra IMAGE_PATHS - + '[' 1 '!=' 1 ']' - + (( i=0 )) - + (( i < 1 )) - + SPEC_PATH=image - + SPEC_VALUE=unused - + '[' unused '!=' unused ']' - + (( i++ )) - + (( i < 1 )) - + '[' -n rabbitmq ']' - + cat - + '[' RabbitmqCluster == OpenStackControlPlane ']' - + '[' RabbitmqCluster == Galera ']' - + '[' RabbitmqCluster == NetConfig ']' - + '[' -n '' ']' - + [[ RabbitmqCluster == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + [[ RabbitmqCluster == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + '[' -n '' ']' - + kustomization_add_resources - + echo merge config dir - merge config dir - ++ find . -type f -name '*.yaml' - ++ grep -v kustomization - + yamls=./rabbitmq.yaml - + for y in ${yamls[@]} - + kustomize edit add resource ./rabbitmq.yaml - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - make wait - 'make[1]: Entering directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'error: the server doesn''t have a resource type "openstackversion"' - bash scripts/operator-wait.sh - + TIMEOUT=500s - +++ dirname scripts/operator-wait.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + '[' -z openstack-operators ']' - + '[' -z rabbitmq ']' - + '[' rabbitmq = rabbitmq ']' - + OPERATOR_NAME=rabbitmq-cluster - + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls - + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "rabbitmq-cluster-operator" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z rabbitmq-cluster ']' - + '[' rabbitmq-cluster = rabbitmq-cluster ']' - + DEPL_NAME=rabbitmq-cluster-operator - ++ oc get -n openstack-operators deployment rabbitmq-cluster-operator -o json - ++ jq -e .status.availableReplicas - + REPLICAS=1 - + '[' 1 '!=' 1 ']' - + echo Succeeded - + exit 0 - + rc=0 - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - + exit 0 - 'make[1]: Leaving directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - bash scripts/operator-deploy-resources.sh - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr ']' - + NEXT_WAIT_TIME=0 - + '[' 0 -eq 15 ']' - + oc kustomize /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/rabbitmq/cr - + oc apply -f - - rabbitmqcluster.rabbitmq.com/rabbitmq created - + '[' 0 -lt 15 ']' - bash scripts/gen-olm.sh - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' -z 38.129.56.103:5001/openstack-k8s-operators/keystone-operator-index:aab5cfe1d4a691d84a96189c698c58d261af9e66 ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op ']' - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op ']' - + mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op - + OPERATOR_CHANNEL=alpha - + OPERATOR_SOURCE=keystone-operator-index - + OPERATOR_SOURCE_NAMESPACE=openstack-operators - + echo OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op - OPERATOR_DIR /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op - + echo OPERATOR_CHANNEL alpha - OPERATOR_CHANNEL alpha - + echo OPERATOR_SOURCE keystone-operator-index - OPERATOR_SOURCE keystone-operator-index - + echo OPERATOR_SOURCE_NAMESPACE openstack-operators - OPERATOR_SOURCE_NAMESPACE openstack-operators - + cat - + cat - + cat - oc apply -f /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op - catalogsource.operators.coreos.com/keystone-operator-index created - operatorgroup.operators.coreos.com/openstack unchanged - subscription.operators.coreos.com/keystone-operator created - mkdir -p /home/zuul/ci-framework-data/artifacts/manifests/operator /home/zuul/ci-framework-data/artifacts/manifests/openstack-operators/keystone/op /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr - bash scripts/clone-operator-repo.sh - 'Cloning repo: git clone /home/zuul/src/github.com/openstack-k8s-operators/keystone-operator keystone-operator' - Cloning into 'keystone-operator'... - done. - cp /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/config/samples/keystone_v1beta1_keystoneapi.yaml /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr - bash scripts/gen-service-kustomize.sh - +++ dirname scripts/gen-service-kustomize.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + . /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts/common.sh --source-only - ++ set -e - + '[' -z keystone-kuttl-tests ']' - + '[' -z KeystoneAPI ']' - + '[' -z osp-secret ']' - + '[' -z /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ']' - + '[' -n '' ']' - + REPLACEMENTS= - + IMAGE=unused - + IMAGE_PATH=containerImage - + STORAGE_REQUEST=10G - + INTERFACE_MTU=1500 - + VLAN_START=20 - + VLAN_STEP=1 - + '[' '!' -d /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ']' - + pushd /home/zuul/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr - ~/ci-framework-data/artifacts/manifests/keystone-kuttl-tests/keystone/cr ~/src/github.com/openstack-k8s-operators/install_yamls - + cat - + [[ KeystoneAPI == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + IFS=, - + read -ra IMAGES - + IFS=, - + read -ra IMAGE_PATHS - + '[' 1 '!=' 1 ']' - + (( i=0 )) - + (( i < 1 )) - + SPEC_PATH=containerImage - + SPEC_VALUE=unused - + '[' unused '!=' unused ']' - + (( i++ )) - + (( i < 1 )) - + '[' -n '' ']' - + '[' KeystoneAPI == OpenStackControlPlane ']' - + '[' KeystoneAPI == Galera ']' - + '[' KeystoneAPI == NetConfig ']' - + '[' -n '' ']' - + [[ KeystoneAPI == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + [[ KeystoneAPI == \O\p\e\n\S\t\a\c\k\C\o\n\t\r\o\l\P\l\a\n\e ]] - + '[' -n '' ']' - + kustomization_add_resources - + echo merge config dir - merge config dir - ++ find . -type f -name '*.yaml' - ++ grep -v kustomization - + yamls=./keystone_v1beta1_keystoneapi.yaml - + for y in ${yamls[@]} - + kustomize edit add resource ./keystone_v1beta1_keystoneapi.yaml - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - make wait - 'make[1]: Entering directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'error: the server doesn''t have a resource type "openstackversion"' - bash scripts/operator-wait.sh - + TIMEOUT=500s - +++ dirname scripts/operator-wait.sh - ++ cd scripts - ++ pwd -P - + SCRIPTPATH=/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq ']' - + pushd /home/zuul/src/github.com/openstack-k8s-operators/install_yamls/scripts - ~/src/github.com/openstack-k8s-operators/install_yamls/scripts ~/src/github.com/openstack-k8s-operators/install_yamls - + timeout 500s bash -c 'until [ "$(bash ./get-operator-status.sh)" == "Succeeded" ]; do sleep 5; done' - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - 'Error from server (NotFound): deployments.apps "keystone-operator-controller-manager" not found' - + REPLICAS= - + '[' '' '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=null - + '[' null '!=' 1 ']' - + exit 1 - + '[' -z openstack-operators ']' - + '[' -z keystone ']' - + '[' keystone = rabbitmq-cluster ']' - + DEPL_NAME=keystone-operator-controller-manager - ++ oc get -n openstack-operators deployment keystone-operator-controller-manager -o json - ++ jq -e .status.availableReplicas - + REPLICAS=1 - + '[' 1 '!=' 1 ']' - + echo Succeeded - + exit 0 - + rc=0 - + popd - ~/src/github.com/openstack-k8s-operators/install_yamls - + exit 0 - 'make[1]: Leaving directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - make keystone_kuttl_run - 'make[1]: Entering directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'error: the server doesn''t have a resource type "openstackversion"' - 'KEYSTONE_KUTTL_DIR=/home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests kubectl-kuttl test --config /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/kuttl-test.yaml /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests --namespace keystone-kuttl-tests ' - '2025/11/25 09:45:58 kutt-test config testdirs is overridden with args: [ /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests ]' - === 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 800 seconds for each step' - ' harness.go:375: testsuite: /home/zuul/ci-framework-data/artifacts/manifests/operator/keystone-operator/test/kuttl/tests has 5 tests' - === RUN kuttl/harness - === RUN kuttl/harness/change_keystone_config - === PAUSE kuttl/harness/change_keystone_config - === RUN kuttl/harness/fernet_rotation - === PAUSE kuttl/harness/fernet_rotation - === RUN kuttl/harness/keystone_resources - === PAUSE kuttl/harness/keystone_resources - === RUN kuttl/harness/keystone_scale - === PAUSE kuttl/harness/keystone_scale - === RUN kuttl/harness/keystone_tls - === PAUSE kuttl/harness/keystone_tls - === CONT kuttl/harness/change_keystone_config - ' logger.go:42: 09:45:58 | change_keystone_config | Skipping creation of user-supplied namespace: keystone-kuttl-tests' - ' logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | starting test step 0-deploy_keystone' - ' logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created' - ' logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:45:58 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:45:59 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:45:59 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:00 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:00 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:01 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:02 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:03 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:03 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:04 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:04 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:05 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:05 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:06 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:06 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:07 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:07 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:08 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:09 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:10 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:10 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:11 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:11 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:12 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:12 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:13 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:13 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:14 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:14 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:15 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:16 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:17 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:17 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:18 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:18 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:19 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:19 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:20 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:20 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:21 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:22 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:23 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:23 | change_keystone_config/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:46:24 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:25 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:26 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:27 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:28 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:30 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:31 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:32 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:33 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:34 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:36 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:37 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:38 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:39 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:40 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:42 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:43 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:44 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:45 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:46 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:48 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:49 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:50 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:51 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:52 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:53 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:55 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:56 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:57 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:58 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:46:59 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:01 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:02 | change_keystone_config/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:02 | change_keystone_config/0-deploy_keystone | test step completed 0-deploy_keystone' - ' logger.go:42: 09:47:02 | change_keystone_config/1- | starting test step 1-' - ' logger.go:42: 09:47:02 | change_keystone_config/1- | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh]' - ' logger.go:42: 09:47:02 | change_keystone_config/1- | test step completed 1-' - ' logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | starting test step 2-change_keystone_config' - ' logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type=''json'' -p=''[{"op": "replace", "path": "/spec/customServiceConfig", "value": "[DEFAULT]\ndebug = false"}]''' - ' ]' - ' logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | keystoneapi.keystone.openstack.org/keystone patched' - ' logger.go:42: 09:47:02 | change_keystone_config/2-change_keystone_config | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh --reverse]' - ' logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | running command: [sh -c $KEYSTONE_KUTTL_DIR/../common/scripts/check_debug_in_keystone_pod_logs.sh --reverse]' - ' logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | error: arguments in resource/name form may not have more than one slash' - ' logger.go:42: 09:47:04 | change_keystone_config/2-change_keystone_config | test step completed 2-change_keystone_config' - ' logger.go:42: 09:47:04 | change_keystone_config/3-cleanup-keystone | starting test step 3-cleanup-keystone' - ' logger.go:42: 09:47:08 | change_keystone_config/3-cleanup-keystone | test step completed 3-cleanup-keystone' - ' logger.go:42: 09:47:08 | change_keystone_config | skipping kubernetes event logging' - === CONT kuttl/harness/keystone_scale - ' logger.go:42: 09:47:08 | keystone_scale | Skipping creation of user-supplied namespace: keystone-kuttl-tests' - ' logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | starting test step 0-deploy_keystone' - ' logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created' - ' logger.go:42: 09:47:08 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:09 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:10 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:10 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:11 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:11 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:12 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:12 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:13 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:13 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:14 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:14 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:15 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:16 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:17 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:17 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:18 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:18 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:19 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:19 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:20 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:20 | keystone_scale/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:47:21 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:22 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:24 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:25 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:26 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:27 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:28 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:30 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:31 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:32 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:33 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:34 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:36 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:37 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:38 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:39 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:40 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:41 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:43 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:44 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:45 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:46 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:47 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:49 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:50 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:51 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:52 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:53 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:55 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:56 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:57 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:58 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:59 | keystone_scale/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:47:59 | keystone_scale/0-deploy_keystone | test step completed 0-deploy_keystone' - ' logger.go:42: 09:47:59 | keystone_scale/1-scale-keystoneapi | starting test step 1-scale-keystoneapi' - ' logger.go:42: 09:47:59 | keystone_scale/1-scale-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type=''json'' -p=''[{"op": "replace", "path": "/spec/replicas", "value":3}]''' - ' ]' - ' logger.go:42: 09:48:00 | keystone_scale/1-scale-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched' - ' logger.go:42: 09:48:32 | keystone_scale/1-scale-keystoneapi | test step completed 1-scale-keystoneapi' - ' logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | starting test step 2-scale-down-keystoneapi' - ' logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type=''json'' -p=''[{"op": "replace", "path": "/spec/replicas", "value":1}]''' - ' ]' - ' logger.go:42: 09:48:32 | keystone_scale/2-scale-down-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched' - ' logger.go:42: 09:48:33 | keystone_scale/2-scale-down-keystoneapi | test step completed 2-scale-down-keystoneapi' - ' logger.go:42: 09:48:33 | keystone_scale/3-scale-down-zero-keystoneapi | starting test step 3-scale-down-zero-keystoneapi' - ' logger.go:42: 09:48:33 | keystone_scale/3-scale-down-zero-keystoneapi | running command: [sh -c oc patch keystoneapi -n $NAMESPACE keystone --type=''json'' -p=''[{"op": "replace", "path": "/spec/replicas", "value":0}]''' - ' ]' - ' logger.go:42: 09:48:34 | keystone_scale/3-scale-down-zero-keystoneapi | keystoneapi.keystone.openstack.org/keystone patched' - ' logger.go:42: 09:48:39 | keystone_scale/3-scale-down-zero-keystoneapi | test step completed 3-scale-down-zero-keystoneapi' - ' logger.go:42: 09:48:39 | keystone_scale/4-cleanup-keystone | starting test step 4-cleanup-keystone' - ' logger.go:42: 09:48:39 | keystone_scale/4-cleanup-keystone | test step completed 4-cleanup-keystone' - ' logger.go:42: 09:48:39 | keystone_scale | skipping kubernetes event logging' - === CONT kuttl/harness/keystone_tls - ' logger.go:42: 09:48:39 | keystone_tls | Skipping creation of user-supplied namespace: keystone-kuttl-tests' - ' logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | starting test step 0-tls_ca_bundle' - ' logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/combined-ca-bundle created' - ' logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/cert-keystone-internal-svc created' - ' logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | Secret:keystone-kuttl-tests/cert-keystone-public-svc created' - ' logger.go:42: 09:48:39 | keystone_tls/0-tls_ca_bundle | test step completed 0-tls_ca_bundle' - ' logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | starting test step 1-keystoneapi_tls_deploy' - ' logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | KeystoneAPI:keystone-kuttl-tests/keystone created' - ' logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:39 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:40 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:40 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:41 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:42 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:43 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:43 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:44 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:44 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:45 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:45 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:46 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:46 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:47 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:47 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:48 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:48 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:50 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:50 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:51 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:51 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:52 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:52 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:53 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:53 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:54 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:54 | keystone_tls/1-keystoneapi_tls_deploy | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:48:55 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:57 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:58 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:48:59 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:00 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:01 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:02 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:03 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:05 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:06 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:07 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:08 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:09 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:10 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:12 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:13 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:14 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:15 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:16 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:17 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:19 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:20 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:21 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:22 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:23 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:24 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:26 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:27 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:28 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:29 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:30 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:31 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:33 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:34 | keystone_tls/1-keystoneapi_tls_deploy | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="https:\/\/keystone-internal.$NAMESPACE.*:https:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ]' - ' logger.go:42: 09:49:34 | keystone_tls/1-keystoneapi_tls_deploy | test step completed 1-keystoneapi_tls_deploy' - ' logger.go:42: 09:49:34 | keystone_tls/2-cleanup-keystone | starting test step 2-cleanup-keystone' - ' logger.go:42: 09:49:39 | keystone_tls/2-cleanup-keystone | test step completed 2-cleanup-keystone' - ' logger.go:42: 09:49:39 | keystone_tls | skipping kubernetes event logging' - === CONT kuttl/harness/keystone_resources - ' logger.go:42: 09:49:39 | keystone_resources | Skipping creation of user-supplied namespace: keystone-kuttl-tests' - ' logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | starting test step 0-deploy_keystone' - ' logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created' - ' logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:39 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:40 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:40 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:42 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:42 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:43 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:43 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:44 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:44 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:45 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:45 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:46 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:46 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:47 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:47 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:49 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:49 | keystone_resources/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:49:50 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:51 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:52 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:53 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:54 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:56 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:57 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:58 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:49:59 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:00 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:01 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:03 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:04 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:05 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:06 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:07 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:09 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:10 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:11 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:12 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:13 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:15 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:16 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:17 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:18 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:19 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:20 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:22 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:23 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:24 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:25 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:26 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:28 | keystone_resources/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:28 | keystone_resources/0-deploy_keystone | test step completed 0-deploy_keystone' - ' logger.go:42: 09:50:28 | keystone_resources/1-deploy-keystoneservice | starting test step 1-deploy-keystoneservice' - ' logger.go:42: 09:50:28 | keystone_resources/1-deploy-keystoneservice | KeystoneService:keystone-kuttl-tests/placement created' - ' logger.go:42: 09:50:30 | keystone_resources/1-deploy-keystoneservice | test step completed 1-deploy-keystoneservice' - ' logger.go:42: 09:50:30 | keystone_resources/2-deploy-keystoneendpoint | starting test step 2-deploy-keystoneendpoint' - ' logger.go:42: 09:50:30 | keystone_resources/2-deploy-keystoneendpoint | KeystoneEndpoint:keystone-kuttl-tests/placement created' - ' logger.go:42: 09:50:41 | keystone_resources/2-deploy-keystoneendpoint | test step completed 2-deploy-keystoneendpoint' - ' logger.go:42: 09:50:41 | keystone_resources/3-cleanup-keystoneendpoint | starting test step 3-cleanup-keystoneendpoint' - ' logger.go:42: 09:50:42 | keystone_resources/3-cleanup-keystoneendpoint | test step completed 3-cleanup-keystoneendpoint' - ' logger.go:42: 09:50:42 | keystone_resources/4-cleanup-keystoneservice | starting test step 4-cleanup-keystoneservice' - ' logger.go:42: 09:50:44 | keystone_resources/4-cleanup-keystoneservice | test step completed 4-cleanup-keystoneservice' - ' logger.go:42: 09:50:44 | keystone_resources/5-cleanup-keystone | starting test step 5-cleanup-keystone' - ' logger.go:42: 09:50:48 | keystone_resources/5-cleanup-keystone | test step completed 5-cleanup-keystone' - ' logger.go:42: 09:50:48 | keystone_resources | skipping kubernetes event logging' - === CONT kuttl/harness/fernet_rotation - ' logger.go:42: 09:50:48 | fernet_rotation | Skipping creation of user-supplied namespace: keystone-kuttl-tests' - ' logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | starting test step 0-deploy_keystone' - ' logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | KeystoneAPI:keystone-kuttl-tests/keystone created' - ' logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:48 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:49 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:49 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:50 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:51 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:52 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:52 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:53 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:53 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:54 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:54 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:55 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:55 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:56 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:56 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:57 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:58 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:50:59 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:50:59 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:51:00 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:00 | fernet_rotation/0-deploy_keystone | Endpoints URLS: : do not match regex' - ' logger.go:42: 09:51:01 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:02 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:03 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:04 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:06 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:07 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:08 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:09 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:10 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:11 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:13 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:14 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:15 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:16 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:17 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:19 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:20 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:21 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:22 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:23 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:25 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:26 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:27 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:28 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:29 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:31 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:32 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:33 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:34 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:35 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:37 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:38 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:39 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:40 | fernet_rotation/0-deploy_keystone | running command: [sh -c # the actual addresses of the apiEndpoints are platform specific, so we can''t rely on' - ' # kuttl asserts to check them. This short script gathers the addresses and checks that' - ' # the three endpoints are defined and their addresses follow the default pattern' - ' template=''{{.status.apiEndpoints.internal}}{{":"}}{{.status.apiEndpoints.public}}{{"\n"}}''' - ' regex="http:\/\/keystone-internal.$NAMESPACE.*:http:\/\/keystone-public.$NAMESPACE.*"' - ' apiEndpoints=$(oc get -n $NAMESPACE KeystoneAPI keystone -o go-template="$template")' - ' matches=$(echo "$apiEndpoints" | sed -e "s?$regex??")' - ' if [ -z "$matches" ]; then' - ' exit 0' - ' else' - ' echo "Endpoints URLS: $apiEndpoints do not match regex"' - ' exit 1' - ' fi' - ' ' - ' # when using image digests the containerImage URLs are SHA''s so we verify them with a script' - ' tupleTemplate=''{{ range (index .spec.template.spec.containers 0).env }}{{ .name }}{{ "#" }}{{ .value}}{{"\n"}}{{ end }}''' - ' imageTuples=$(oc get -n openstack-operators deployment keystone-operator-controller-manager -o go-template="$tupleTemplate")' - ' # format of imageTuple is: RELATED_IMAGE_KEYSTONE_# separated by newlines' - ' for ITEM in $(echo $imageTuples); do' - ' # it is an image' - ' if echo $ITEM | grep ''RELATED_IMAGE'' &> /dev/null; then' - ' NAME=$(echo $ITEM | sed -e ''s|^RELATED_IMAGE_KEYSTONE_\([^_]*\)_.*|\1|'')' - ' IMG_FROM_ENV=$(echo $ITEM | sed -e ''s|^.*#\(.*\)|\1|'')' - ' template=''{{.spec.containerImage}}''' - ' case $NAME in' - ' API)' - ' SERVICE_IMAGE=$(oc get -n $NAMESPACE keystoneapi keystone -o go-template="$template")' - ' ;;' - ' esac' - ' if [ "$SERVICE_IMAGE" != "$IMG_FROM_ENV" ]; then' - ' echo "$NAME image does not equal $VALUE"' - ' exit 1' - ' fi' - ' fi' - ' done' - ' ]' - ' logger.go:42: 09:51:40 | fernet_rotation/0-deploy_keystone | test step completed 0-deploy_keystone' - ' logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | starting test step 1-deploy_openstackclient' - ' logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | Pod:keystone-kuttl-tests/openstackclient created' - ' logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | running command: [sh -c ../../common/scripts/create_test_token.sh]' - ' logger.go:42: 09:51:40 | fernet_rotation/1-deploy_openstackclient | + oc wait --for=condition=ready pod openstackclient --timeout=30s -n keystone-kuttl-tests' - ' logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | pod/openstackclient condition met' - ' logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | + alias ''openstack=oc exec -tn keystone-kuttl-tests openstackclient -- openstack''' - ' logger.go:42: 09:51:49 | fernet_rotation/1-deploy_openstackclient | ++ oc exec -tn keystone-kuttl-tests openstackclient -- openstack token issue -f value -c id' - ' logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | + echo gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 09:51:54 | fernet_rotation/1-deploy_openstackclient | test step completed 1-deploy_openstackclient' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | starting test step 2-rotate_keys' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | Secret:keystone-kuttl-tests/keystone updated' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | running command: [sh -c ../../common/scripts/validate_test_token.sh]' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + seconds=1' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + ''['' 1 -le 30 '']''' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | ++ oc get secret keystone -n keystone-kuttl-tests -o ''jsonpath={.metadata.annotations[''\''''keystone\.openstack\.org/rotatedat''\'''']}''' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + rotatedat=2025-11-25T09:51:54Z' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + ''['' 2025-11-25T09:51:54Z ''!='' 2009-11-10T23:00:00Z '']''' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + break' - ' logger.go:42: 09:51:54 | fernet_rotation/2-rotate_keys | + sleep 60' - ' logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 09:52:54 | fernet_rotation/2-rotate_keys | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | ++ true' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + output=''The service catalog is empty.' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | command terminated with exit code 1''' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + echo ''The service catalog is empty.' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | command terminated with exit code 1''' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + grep -qi ''Could not recognize Fernet token''' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | + exit 0' - ' logger.go:42: 09:52:57 | fernet_rotation/2-rotate_keys | test step completed 2-rotate_keys' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | starting test step 3-rotate_keys_until_invalidate' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/rotate_token.sh]' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + TMP_SECRET_FILE=/tmp/keystone-secret.yaml' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Starting rotation 1...''' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 1...' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + cat' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | Warning: resource secrets/keystone is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by oc apply. oc apply should only be used on resources created declaratively by either oc create --save-config or oc apply. The missing annotation will be patched automatically.' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured' - ' logger.go:42: 09:52:57 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Rotation 1 completed successfully.''' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 1 completed successfully.' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Starting rotation 2...''' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 2...' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + cat' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml' - ' logger.go:42: 09:54:37 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured' - ' logger.go:42: 09:54:38 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Rotation 2 completed successfully.''' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 2 completed successfully.' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Starting rotation 3...''' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 3...' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + cat' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured' - ' logger.go:42: 09:56:18 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Rotation 3 completed successfully.''' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 3 completed successfully.' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Starting rotation 4...''' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 4...' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + cat' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured' - ' logger.go:42: 09:57:58 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Rotation 4 completed successfully.''' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 4 completed successfully.' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + for rotation in {1..5}' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Starting rotation 5...''' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | Starting rotation 5...' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + generate_secret_yaml' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + cat' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + oc apply -f /tmp/keystone-secret.yaml' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | secret/keystone configured' - ' logger.go:42: 09:59:38 | fernet_rotation/3-rotate_keys_until_invalidate | + sleep 100' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Rotation 5 completed successfully.''' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | Rotation 5 completed successfully.' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + rm -f /tmp/keystone-secret.yaml' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''All rotations completed successfully.''' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | All rotations completed successfully.' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 0' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:18 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:20 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:21 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:23 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:24 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:26 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:27 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:28 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:29 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:31 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:32 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:34 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:35 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:36 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:37 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:39 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:40 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:41 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:42 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:44 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:45 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:47 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:48 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:49 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:50 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''The service catalog is empty.' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''The service catalog is empty.' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''''' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:52 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 1' - ' logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | running command: [sh -c ../../common/scripts/test_invalid_token.sh]' - ' logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | ++ cat /tmp/temporary_test_token' - ' logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | + export OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | + OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I' - ' logger.go:42: 10:01:53 | fernet_rotation/3-rotate_keys_until_invalidate | ++ oc exec -tn keystone-kuttl-tests openstackclient -- env -u OS_CLOUD - OS_AUTH_URL=http://keystone-public.keystone-kuttl-tests.svc:5000 OS_AUTH_TYPE=token OS_TOKEN=gAAAAABpJXw5i1rZXma_rVoFGoP2ZhotSvWJ57wE8QIlgmzdKnRWixLp05OwuAekDvLxqykxW9-2aTYaJhYKDZHVAaSmtolCdWOIV1oWixOCtSYdHuciXDHQI-x51NabXKqbN1fKDmCwr12056iycMOrXIoS_hooljEXRPuFI_wLLPPMd2X9P-I openstack endpoint list' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + output=''Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | ++ echo ''Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | command terminated with exit code 1''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | ++ grep -i ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + filtered_output=''Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + grep -q ''Could not recognize Fernet token''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + echo ''Could not recognize Fernet token (HTTP 404) (Request-ID: req-3906e407-74d2-498a-b817-1e878bd0a6e3)''' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | + exit 0' - ' logger.go:42: 10:01:55 | fernet_rotation/3-rotate_keys_until_invalidate | test step completed 3-rotate_keys_until_invalidate' - ' logger.go:42: 10:01:55 | fernet_rotation/4-cleanup-openstackclient | starting test step 4-cleanup-openstackclient' - ' logger.go:42: 10:01:56 | fernet_rotation/4-cleanup-openstackclient | test step completed 4-cleanup-openstackclient' - ' logger.go:42: 10:01:56 | fernet_rotation/5-cleanup-keystone | starting test step 5-cleanup-keystone' - ' case.go:396: failed in step 5-cleanup-keystone' - ' case.go:398: Get "https://api.crc.testing:6443/apis/keystone.openstack.org/v1beta1/namespaces/keystone-kuttl-tests/keystoneapis/keystone": dial tcp 38.102.83.5:6443: connect: connection refused' - ' logger.go:42: 10:02:01 | fernet_rotation | skipping kubernetes event logging' - ' step.go:213: Delete "https://api.crc.testing:6443/api/v1/namespaces/keystone-kuttl-tests/pods/openstackclient": dial tcp 38.102.83.5:6443: connect: connection refused' - ' step.go:213: Delete "https://api.crc.testing:6443/apis/keystone.openstack.org/v1beta1/namespaces/keystone-kuttl-tests/keystoneapis/keystone": dial tcp 38.102.83.5:6443: connect: connection refused' - === NAME kuttl - ' harness.go:406: run tests finished' - ' harness.go:514: cleaning up' - ' harness.go:571: removing temp folder: ""' - '--- FAIL: kuttl (963.06s)' - ' --- FAIL: kuttl/harness (0.00s)' - ' --- PASS: kuttl/harness/change_keystone_config (70.68s)' - ' --- PASS: kuttl/harness/keystone_scale (90.56s)' - ' --- PASS: kuttl/harness/keystone_tls (60.23s)' - ' --- PASS: kuttl/harness/keystone_resources (68.82s)' - ' --- FAIL: kuttl/harness/fernet_rotation (672.76s)' - FAIL - 'make[1]: *** [Makefile:1807: keystone_kuttl_run] Error 1' - 'make[1]: Leaving directory ''/home/zuul/src/github.com/openstack-k8s-operators/install_yamls''' - 'make: *** [Makefile:1816: keystone_kuttl] Error 2' 2025-11-25 10:02:01,571 p=31439 u=zuul n=ansible | ...ignoring 2025-11-25 10:02:01,610 p=31439 u=zuul n=ansible | TASK [Get resource status after keystone_kuttl run _raw_params={{ item }} >> {{ cifmw_artifacts_basedir }}/logs/cmd_after_{{ operator }}_kuttl.log ] *** 2025-11-25 10:02:01,610 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:20:37.738) 0:23:23.665 ****** 2025-11-25 10:02:01,610 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:20:37.738) 0:23:23.663 ****** 2025-11-25 10:02:01,624 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => msg: '''commands_after_kuttl_run'' is undefined. ''commands_after_kuttl_run'' is undefined' 2025-11-25 10:02:01,624 p=31439 u=zuul n=ansible | ...ignoring 2025-11-25 10:02:01,632 p=31439 u=zuul n=ansible | TASK [Find the generated JUnitXML files paths={{ cifmw_installyamls_repos }}, file_type=file, patterns=*.xml] *** 2025-11-25 10:02:01,633 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:00:00.022) 0:23:23.688 ****** 2025-11-25 10:02:01,633 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:00:00.022) 0:23:23.686 ****** 2025-11-25 10:02:01,809 p=31439 u=zuul n=ansible | ok: [localhost] 2025-11-25 10:02:01,817 p=31439 u=zuul n=ansible | TASK [Create the test results directory path={{ _kuttl_test_result_dir }}, state=directory, mode=0755] *** 2025-11-25 10:02:01,817 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:00:00.184) 0:23:23.872 ****** 2025-11-25 10:02:01,817 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:01 +0000 (0:00:00.184) 0:23:23.871 ****** 2025-11-25 10:02:02,018 p=31439 u=zuul n=ansible | changed: [localhost] 2025-11-25 10:02:02,025 p=31439 u=zuul n=ansible | TASK [Copy the generated test results to the test results directory src={{ item.path }}, dest={{ _kuttl_test_result_dir }}, mode=0644] *** 2025-11-25 10:02:02,026 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.208) 0:23:24.081 ****** 2025-11-25 10:02:02,026 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.208) 0:23:24.079 ****** 2025-11-25 10:02:02,657 p=31439 u=zuul n=ansible | changed: [localhost] => (item={'path': '/home/zuul/src/github.com/openstack-k8s-operators/install_yamls/kuttl-report-keystone.xml', 'mode': '0644', 'isdir': False, 'ischr': False, 'isblk': False, 'isreg': True, 'isfifo': False, 'islnk': False, 'issock': False, 'uid': 1000, 'gid': 1000, 'size': 1271, 'inode': 33737041, 'dev': 64513, 'nlink': 1, 'atime': 1764064921.191647, 'mtime': 1764064921.191647, 'ctime': 1764064921.191647, 'gr_name': 'zuul', 'pw_name': 'zuul', 'wusr': True, 'rusr': True, 'xusr': False, 'wgrp': False, 'rgrp': True, 'xgrp': False, 'woth': False, 'roth': True, 'xoth': False, 'isuid': False, 'isgid': False}) 2025-11-25 10:02:02,667 p=31439 u=zuul n=ansible | TASK [Fail when any tests failed that=['_kuttl_curr_operator_result.rc == 0'], success_msg=KUTTL tests for {{ operator }} passed, fail_msg=KUTTL tests for {{ operator }} failed] *** 2025-11-25 10:02:02,667 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.641) 0:23:24.722 ****** 2025-11-25 10:02:02,667 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.641) 0:23:24.721 ****** 2025-11-25 10:02:02,722 p=31439 u=zuul n=ansible | fatal: [localhost]: FAILED! => assertion: _kuttl_curr_operator_result.rc == 0 changed: false evaluated_to: false msg: KUTTL tests for keystone failed 2025-11-25 10:02:02,723 p=31439 u=zuul n=ansible | NO MORE HOSTS LEFT ************************************************************* 2025-11-25 10:02:02,724 p=31439 u=zuul n=ansible | PLAY RECAP ********************************************************************* 2025-11-25 10:02:02,724 p=31439 u=zuul n=ansible | localhost : ok=109 changed=50 unreachable=0 failed=1 skipped=60 rescued=0 ignored=5 2025-11-25 10:02:02,724 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.057) 0:23:24.779 ****** 2025-11-25 10:02:02,724 p=31439 u=zuul n=ansible | =============================================================================== 2025-11-25 10:02:02,724 p=31439 u=zuul n=ansible | install_yamls_makes : Run keystone_kuttl ----------------------------- 1237.74s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | install_yamls_makes : Run download_tools ------------------------------- 48.58s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_setup : Install needed packages ------------------------------------- 32.12s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Remove the cifmw_cls_namespace namespace ------------ 11.20s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | repo_setup : Initialize python venv and install requirements ------------ 9.67s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_setup : Install openshift client ------------------------------------- 5.54s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Perform action in the PV directory ------------------- 5.43s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | install_yamls_makes : Run crc_attach_default_interface ------------------ 5.20s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Perform action in the PV directory ------------------- 5.14s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Fetch hostnames for all hosts ------------------------ 3.04s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Fetch hostnames for all hosts ------------------------ 1.96s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | openshift_setup : Create required namespaces ---------------------------- 1.90s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | install_ca : Update ca bundle ------------------------------------------- 1.71s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_setup : Manage directories ------------------------------------------- 1.20s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Get k8s nodes ---------------------------------------- 1.18s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | openshift_setup : Patch network operator -------------------------------- 1.10s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | openshift_setup : Gather network.operator info -------------------------- 1.07s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | repo_setup : Make sure git-core package is installed -------------------- 1.04s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | Gathering Facts --------------------------------------------------------- 0.98s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage : Save storage manifests as artifacts ------------------ 0.95s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | Tuesday 25 November 2025 10:02:02 +0000 (0:00:00.058) 0:23:24.779 ****** 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | =============================================================================== 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | install_yamls_makes -------------------------------------------------- 1291.73s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_setup --------------------------------------------------------------- 40.32s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | ci_local_storage ------------------------------------------------------- 33.91s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | repo_setup ------------------------------------------------------------- 18.64s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | openshift_setup --------------------------------------------------------- 5.59s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | openshift_login --------------------------------------------------------- 4.27s 2025-11-25 10:02:02,725 p=31439 u=zuul n=ansible | install_yamls ----------------------------------------------------------- 3.75s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | install_ca -------------------------------------------------------------- 2.20s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | gather_facts ------------------------------------------------------------ 0.98s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | cifmw_setup ------------------------------------------------------------- 0.74s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.copy ---------------------------------------------------- 0.64s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | discover_latest_image --------------------------------------------------- 0.60s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.include_role -------------------------------------------- 0.34s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | run_hook ---------------------------------------------------------------- 0.27s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.file ---------------------------------------------------- 0.21s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.find ---------------------------------------------------- 0.18s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.set_fact ------------------------------------------------ 0.13s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.include_tasks ------------------------------------------- 0.07s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.include_vars -------------------------------------------- 0.06s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.assert -------------------------------------------------- 0.06s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ansible.builtin.shell --------------------------------------------------- 0.05s 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-11-25 10:02:02,726 p=31439 u=zuul n=ansible | total ---------------------------------------------------------------- 1404.74s